Flow Service APIを使用して、ソースの行レベル データをフィルタリングします
このガイドでは、Flow Service APIを使用してソースの行レベルのデータをフィルタリングする手順について説明します。
基本を学ぶ
このチュートリアルは、Adobe Experience Platform の次のコンポーネントを実際に利用および理解しているユーザーを対象としています。
Experience Platform APIの使用
Experience Platform APIの呼び出しを正常に行う方法について詳しくは、Experience Platform APIの概要に関するガイドを参照してください。
ソースデータをフィルタリング filter-source-data
次に、ソースの行レベルのデータをフィルタリングするために実行する手順の概要を示します。
接続仕様の取得 retrieve-your-connection-specs
ソースの行レベルのデータをフィルタリングする最初の手順は、ソースの接続仕様を取得し、ソースがサポートする演算子と言語を決定することです。
特定のソースの接続仕様を取得するには、/connectionSpecs APIのFlow Service エンドポイントにGET リクエストを行い、クエリパラメーターの一部としてソースのプロパティ名を指定します。
API 形式
GET /connectionSpecs/{QUERY_PARAMS}
{QUERY_PARAMS}nameを指定することで、"google-big-query"接続仕様を取得できます。次のリクエストは、Google BigQueryの接続仕様を取得します。
| code language-shell |
|---|
|
応答が成功すると、ステータスコード 200と、サポートされているクエリ言語と論理演算子に関する情報を含むGoogle BigQueryの接続仕様が返されます。
| code language-json |
|---|
|
| table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 layout-auto | |
|---|---|
| プロパティ | 説明 |
attributes.filterAtSource.enabled |
クエリされたソースが行レベルのデータのフィルタリングをサポートしているかどうかを指定します。 |
attributes.filterAtSource.queryLanguage |
クエリされたソースがサポートするクエリ言語を指定します。 |
attributes.filterAtSource.logicalOperators |
ソースの行レベルのデータをフィルタリングするために使用できる論理演算子を決定します。 |
attributes.filterAtSource.comparisonOperators |
ソースの行レベルのデータをフィルタリングするために使用できる比較演算子を決定します。 比較演算子について詳しくは、次の表を参照してください。 |
attributes.filterAtSource.columnNameEscapeChar |
列のエスケープに使用する文字を指定します。 |
attributes.filterAtSource.valueEscapeChar |
SQL クエリの書き込み時に値を囲む方法を指定します。 |
比較演算子 comparison-operators
==!=<><=>=likeWHERE句で使用されるフィルター。in取り込むフィルター条件の指定 specify-filtering-conditions-for-ingestion
ソースがサポートする論理演算子とクエリ言語を特定したら、Profile Query Language(PQL)を使用して、ソースデータに適用するフィルタリング条件を指定できます。
以下の例では、条件は、パラメーターとしてリストされたノードタイプに指定された値と等しいデータのみを選択するために適用されます。
{
"type": "PQL",
"format": "pql/json",
"value": {
"nodeType": "fnApply",
"fnName": "=",
"params": [
{
"nodeType": "fieldLookup",
"fieldName": "city"
},
{
"nodeType": "literal",
"value": "DDN"
}
]
}
}
データのプレビュー preview-your-data
クエリ パラメーターの一部として/exploreを指定し、Flow ServiceでPQL入力条件を指定しながら、filters APIのBase64 エンドポイントにGET リクエストを行うことで、データをプレビューできます。
API 形式
GET /connections/{BASE_CONNECTION_ID}/explore?objectType=table&object={TABLE_PATH}&preview=true&filters={FILTERS}
{BASE_CONNECTION_ID}{TABLE_PATH}{FILTERS}| code language-shell |
|---|
|
応答が成功すると、データの内容と構造が返されます。
| code language-json |
|---|
|
フィルタリングされたデータのソース接続の作成
ソース接続を作成し、フィルターされたデータを取り込むには、/sourceConnections エンドポイントにPOST リクエストを行い、リクエスト本文パラメーターにフィルター条件を指定します。
API 形式
POST /sourceConnections
次のリクエストは、test1.fasTestTable = cityのDDNからデータを取り込むソース接続を作成します。
| code language-shell |
|---|
|
応答が成功すると、新しく作成されたソース接続の一意の識別子(id)が返されます。
| code language-json |
|---|
|
Marketo Engageのアクティビティエンティティをフィルタリング filter-for-marketo
行レベルのフィルタリングを使用して、Marketo Engage ソースコネクタ を使用する際に、アクティビティエンティティをフィルタリングできます。 現在、アクティビティエンティティと標準アクティビティタイプに対してのみフィルタリングできます。 カスタムアクティビティは、Marketo フィールドマッピング の下で管理されたままです。
Marketo標準アクティビティタイプ marketo-standard-activity-types
次の表は、Marketoの標準アクティビティタイプの概要を示しています。 この表をフィルタリング条件の参照として使用します。
Marketo ソースコネクタを使用する場合に標準アクティビティエンティティをフィルタリングするには、次の手順に従います。
ドラフトデータフローの作成
まず、Marketo データフローを作成し、ドラフトとして保存します。 ドラフトデータフローの作成方法について詳しくは、次のドキュメントを参照してください。
データフローIDの取得
ドラフトされたデータフローを作成したら、対応するIDを取得する必要があります。
UIで、ソースカタログに移動し、上部ヘッダーから「Dataflows」を選択します。 ステータス列を使用して、ドラフトモードで保存されたすべてのデータフローを特定し、データフローの名前を選択します。 次に、右側のProperties パネルを使用して、データフローIDを見つけます。
データフローの詳細を取得
次に、データフローの詳細、特にデータフローに関連付けられたソース接続IDを取得する必要があります。 データフローの詳細を取得するには、/flows エンドポイントに対してGET リクエストを行い、データフローIDをパスパラメーターとして指定します。
API 形式
GET /flows/{FLOW_ID}
{FLOW_ID}次のリクエストは、データフローID a7e88a01-40f9-4ebf-80b2-0fc838ff82efに関する情報を取得します。
| code language-shell |
|---|
|
応答が成功すると、対応するソース接続とターゲット接続に関する情報を含むデータフローの詳細が返されます。 データフローを公開するには、これらの値が後で必要となるため、ソース接続IDとターゲット接続IDをメモしておく必要があります。
| code language-json line-numbers data-start-1 data-line-offset-4 h-23 h-26 |
|---|
|
ソース接続の詳細を取得
次に、ソース接続IDを使用し、/sourceConnections エンドポイントに対してGET リクエストを実行して、ソース接続の詳細を取得します。
API 形式
GET /sourceConnections/{SOURCE_CONNECTION_ID}
{SOURCE_CONNECTION_ID}| code language-shell |
|---|
|
応答が成功すると、ソース接続の詳細が返されます。 ソース接続を更新するには、次の手順でこの値が必要になるので、バージョンを書き留めてください。
| code language-json line-numbers data-start-1 data-line-offset-4 h-30 |
|---|
|
フィルター条件を使用したソース接続の更新
これで、ソース接続IDと対応するバージョンが用意できたので、標準のアクティビティタイプを指定するフィルター条件を使用してPATCH リクエストを行うことができます。
ソース接続を更新するには、/sourceConnections エンドポイントに対してPATCH リクエストを行い、クエリ パラメーターとしてソース接続IDを指定します。 さらに、対応するバージョンのソース接続を含むIf-Match ヘッダーパラメーターを指定する必要があります。
If-Match ヘッダーは、PATCH リクエストを行う際に必要です。このヘッダーの値は、更新するデータフローの一意のバージョン/タグです。 バージョン/タグ値は、データフローが正常に更新されるたびに更新されます。API 形式
PATCH /sourceConnections/{SOURCE_CONNECTION_ID}
{SOURCE_CONNECTION_ID}| code language-shell |
|---|
|
応答が成功すると、ソース接続IDとetag (バージョン)が返されます。
| code language-json |
|---|
|
ソース接続を公開
ソース接続がフィルタリング条件で更新されたので、ドラフト状態から先に進み、ソース接続を公開できるようになりました。 これを行うには、/sourceConnections エンドポイントにPOST リクエストを行い、ドラフトソース接続のIDと、公開用のアクション操作を指定します。
API 形式
POST /sourceConnections/{SOURCE_CONNECTION_ID}/action?op=publish
{SOURCE_CONNECTION_ID}opop を publish に設定します。次のリクエストは、ドラフトされたソース接続を公開します。
| code language-shell |
|---|
|
応答が成功すると、ソース接続IDとetag (バージョン)が返されます。
| code language-json |
|---|
|
ターゲット接続を公開
前の手順と同様に、ドラフトデータフローを続行して公開するには、ターゲット接続も公開する必要があります。 /targetConnections エンドポイントにPOST リクエストを行い、公開するドラフトターゲット接続のIDと、公開用のアクション操作を指定します。
API 形式
POST /targetConnections/{TARGET_CONNECTION_ID}/action?op=publish
{TARGET_CONNECTION_ID}opop を publish に設定します。次のリクエストは、ID 7e53e6e8-b432-4134-bb29-21fc6e8532e5のターゲット接続を公開します。
| code language-shell |
|---|
|
正常な応答は、ID と、公開したターゲット接続に対応する etag を返します。
| code language-json |
|---|
|
データフローを公開
ソース接続とターゲット接続の両方が公開されたら、最後の手順に進んでデータフローを公開できるようになりました。 データフローを公開するには、/flows エンドポイントにPOST リクエストを行い、公開用にデータフローIDとアクション操作を指定します。
API 形式
POST /flows/{FLOW_ID}/action?op=publish
{FLOW_ID}opop を publish に設定します。次のリクエストでは、ドラフトデータフローを公開しています。
| code language-shell |
|---|
|
正常な応答は、データフローの ID と対応する etag を返します。
| code language-json |
|---|
|
Experience Platform UIを使用して、ドラフトデータフローが公開されていることを確認できます。 ソースカタログのデータフローページに移動し、データフローの Status を参照します。 成功した場合、ステータスは 有効 に設定されるようになりました。
- フィルターが有効になっているデータフローは、1回のみバックフィルされます。 フィルタリング条件で行ったの変更(追加または削除など)は、増分データに対してのみ有効になります。
- 新しいアクティビティタイプの履歴データを取り込む必要がある場合は、新しいデータフローを作成し、フィルター条件で適切なアクティビティタイプを使用してフィルタリング条件を定義することをお勧めします。
- カスタムアクティビティタイプはフィルタリングできません。
- フィルタリングされたデータはプレビューできません。
付録
この節では、フィルタリング用の様々なペイロードの例をさらに示します。
特異条件
1つの条件のみを必要とするシナリオの初期fnApplyを省略できます。
| code language-json |
|---|
|
in演算子の使用
演算子inの例については、以下のサンプルペイロードを参照してください。
| code language-json |
|---|
|
isNull演算子の使用
演算子isNullの例については、以下のサンプルペイロードを参照してください。
| code language-json |
|---|
|
NOT演算子の使用
演算子NOTの例については、以下のサンプルペイロードを参照してください。
| code language-json |
|---|
|
ネストされた条件を使用した例
複雑なネストされた条件の例については、以下のサンプルペイロードを参照してください。
| code language-json |
|---|
|