Flow Service API を使用したソースの行レベルのデータのフィルタリング
Flow Service API を使用してソースの行レベルのデータをフィルタリングする手順については、このガイドを参照してください。
基本を学ぶ
このチュートリアルは、Adobe Experience Platform の次のコンポーネントを実際に利用および理解しているユーザーを対象としています。
Platform API の使用
Platform API を正常に呼び出す方法について詳しくは、Platform API の概要のガイドを参照してください。
ソースデータをフィルター filter-source-data
ソースの行レベルのデータをフィルタリングするための手順の概要を次に示します。
接続仕様の取得 retrieve-your-connection-specs
ソースの行レベルのデータをフィルタリングする最初の手順は、ソースの接続仕様を取得し、ソースがサポートする演算子と言語を決定することです。
特定のソースの接続仕様を取得するには、Flow Service API の /connectionSpecs
エンドポイントに対してGETリクエストを実行し、クエリパラメーターの一部としてソースのプロパティ名を指定します。
API 形式
GET /connectionSpecs/{QUERY_PARAMS}
{QUERY_PARAMS}
name
プロパティを適用して検索で "google-big-query"
を指定すると、Google BigQuery 接続仕様を取得できます。次のリクエストは、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
==
!=
<
>
<=
>=
like
WHERE
句で使用され、指定したパターンを検索することでフィルタリングします。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
Flow Service API の /explore
エンドポイントに対してデータリクエストを行い、その際にクエリパラメーターの一部として filters
を指定し、Base64 でPQL入力条件を指定することで、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
次のリクエストでは、city
= DDN
の test1.fasTestTable
からデータを取り込むソース接続を作成しています。
code language-shell |
---|
|
リクエストが成功した場合は、新しく作成されたソース接続の一意の ID (id
)が返されます。
code language-json |
---|
|
Marketo Engage のアクティビティエンティティのフィルタリング filter-for-marketo
Marketo Engage ソースコネクタを使用する場合、行レベルのフィルタリングを使用して、アクティビティエンティティをフィルタリングできます。 現在、フィルターできるのは、アクティビティエンティティと標準アクティビティタイプのみです。 カスタムアクティビティは、引き続き Marketo フィールドマッピングで管理されます。
Marketo 標準アクティビティタイプ marketo-standard-activity-types
次の表に、Marketo の標準アクティビティタイプの概要を示します。 このテーブルをフィルター条件の参照として使用します。
Marketo ソースコネクタを使用する場合は、次の手順に従って標準アクティビティエンティティをフィルタリングします。
ドラフトデータフローの作成
まず、Marketo データフローを作成し、ドラフトとして保存します。 ドラフトデータフローの作成方法に関する詳細な手順については、次のドキュメントを参照してください。
データフロー ID の取得
データフローのドラフトを作成したら、対応する ID を取得する必要があります。
UI でソースカタログに移動し、上部のヘッダーから データフロー を選択します。 ステータス列を使用して、ドラフトモードで保存されたすべてのデータフローを識別し、データフローの名前を選択します。 次に、右側の プロパティ パネルを使用して、データフロー 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 リクエストを行う際に必要です。このヘッダーの値は、更新するデータフローの一意のバージョン/etag です。 version/etag の値は、データフローが正常に更新されるたびに更新されます。API 形式
PATCH /sourceConnections/{SOURCE_CONNECTION_ID}
{SOURCE_CONNECTION_ID}
code language-shell |
---|
|
正常な応答は、ソース接続 ID と etag (バージョン)を返します。
code language-json |
---|
|
ソース接続のPublish
フィルター条件を使用してソース接続を更新すると、ドラフト状態から進んでソース接続を公開できるようになります。 これを行うには、/sourceConnections
エンドポイントに対してPOSTリクエストを実行し、ドラフトソース接続の ID と公開用のアクション操作を指定します。
API 形式
POST /sourceConnections/{SOURCE_CONNECTION_ID}/action?op=publish
{SOURCE_CONNECTION_ID}
op
op
を publish
に設定します。次のリクエストでは、ドラフトに設定したソース接続を公開しています。
code language-shell |
---|
|
正常な応答は、ソース接続 ID と etag (バージョン)を返します。
code language-json |
---|
|
ターゲット接続のPublish
前のステップと同様に、ドラフトデータフローを続行して公開するには、ターゲット接続も公開する必要があります。 /targetConnections
エンドポイントに対してPOSTリクエストを実行し、公開するドラフトターゲット接続の ID と公開用のアクション操作を指定します。
API 形式
POST /targetConnections/{TARGET_CONNECTION_ID}/action?op=publish
{TARGET_CONNECTION_ID}
op
op
を publish
に設定します。次のリクエストでは、ID 7e53e6e8-b432-4134-bb29-21fc6e8532e5
のターゲット接続が公開されます。
code language-shell |
---|
|
正常な応答は、ID と、公開したターゲット接続に対応する etag を返します。
code language-json |
---|
|
データフローのPublish化
ソース接続とターゲット接続の両方が公開されたので、最後の手順に進み、データフローを公開できます。 データフローを公開するには、/flows
エンドポイントに対してPOSTリクエストを実行し、公開用のデータフロー ID とアクション操作を指定します。
API 形式
POST /flows/{FLOW_ID}/action?op=publish
{FLOW_ID}
op
op
を publish
に設定します。次のリクエストでは、ドラフトデータフローを公開しています。
code language-shell |
---|
|
正常な応答は、データフローの ID と対応する etag
を返します。
code language-json |
---|
|
Experience PlatformUI を使用すると、ドラフトデータフローが公開されたことを確認できます。 ソースカタログのデータフローページに移動し、データフローの ステータス を参照します。 成功した場合、ステータスは 有効 に設定されます。
- フィルタリングが有効になっているデータフローは、1 回だけバックフィルされます。 フィルタリング条件(追加または削除)でおこなった変更は、増分データに対してのみ有効にできます。
- 新しいアクティビティタイプの履歴データを取り込む必要がある場合は、新しいデータフローを作成し、フィルター条件の適切なアクティビティタイプを使用してフィルター条件を定義することをお勧めします。
- カスタムアクティビティタイプはフィルタリングできません。
- フィルターされたデータをプレビューできません。
付録
この節では、フィルタリングに使用する様々なペイロードの例をさらに示します。
特異条件
1 つの条件のみを必要とするシナリオでは、初期 fnApply
を省略できます。
code language-json |
---|
|
in
演算子の使用
演算子 in
の例については、以下のサンプルペイロードを参照してください。
code language-json |
---|
|
isNull
演算子の使用
演算子 isNull
の例については、以下のサンプルペイロードを参照してください。
code language-json |
---|
|
NOT
演算子の使用
演算子 NOT
の例については、以下のサンプルペイロードを参照してください。
code language-json |
---|
|
ネストされた条件を使用した例
複雑なネスト条件の例については、以下のサンプルペイロードを参照してください。
code language-json |
---|
|