使用Flow Service API筛选源的行级数据
阅读本指南,了解如何使用Flow Service API筛选源的行级数据的步骤。
快速入门
本教程要求您实际了解Adobe Experience Platform的以下组件:
使用平台API
有关如何成功调用平台API的信息,请参阅平台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 |
---|
|
成功的响应返回Google BigQuery的状态代码200和连接规范,包括有关其支持的查询语言和逻辑运算符的信息。
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
端点发出GET请求,同时提供filters
作为查询参数的一部分,并在Base64中指定PQL输入条件。
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。
在用户界面中,导航到源目录,然后从顶部标题中选择 数据流。 使用状态列可识别在草稿模式下保存的所有数据流,然后选择数据流的名称。 接下来,使用右侧的 属性 面板来查找您的数据流ID。
检索数据流详细信息
接下来,必须检索数据流详细信息,尤其是与数据流关联的源连接ID。 要检索数据流详细信息,请向/flows
端点发出GET请求,并提供您的数据流ID作为path参数。
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
标头。 此标头的值是要更新的数据流的唯一版本/电子标记。 每次成功更新数据流时,版本/电子标记值都会更新。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您的target连接
与上一步类似,您还必须发布目标连接,才能继续并发布草稿数据流。 向/targetConnections
端点发出POST请求,并提供要发布的草稿Target连接的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和相应的电子标记。
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验证草稿数据流是否已发布。 导航到源目录中的数据流页面并引用数据流的 状态。 如果成功,状态现在应设置为 已启用。
- 启用了过滤的数据流将只回填一次。 您在筛选条件中所做的任何更改(无论是添加还是删除)都只能对增量数据生效。
- 如果需要摄取任何新活动类型的历史数据,建议您创建新数据流,并在筛选条件中使用相应的活动类型定义筛选条件。
- 您无法筛选自定义活动类型。
- 无法预览过滤的数据。
附录
本节提供了用于筛选的不同有效负载的进一步示例。
奇异条件
对于只需要一个条件的方案,可以省略初始fnApply
。
code language-json |
---|
|
使用in
运算符
有关运算符in
的示例,请参阅下面的示例有效负载。
code language-json |
---|
|
使用isNull
运算符
有关运算符isNull
的示例,请参阅下面的示例有效负载。
code language-json |
---|
|
使用NOT
运算符
有关运算符NOT
的示例,请参阅下面的示例有效负载。
code language-json |
---|
|
嵌套条件的示例
有关复杂嵌套条件的示例,请参阅下面的有效负荷示例。
code language-json |
---|
|