比较运算符

操作员描述
==按属性是否等于提供的值筛选。
!=按属性是否不等于提供的值筛选。
<根据属性是否小于提供的值来进行筛选。
>按属性是否大于提供的值筛选。
<=根据属性是否小于或等于提供的值来进行筛选。
>=按属性是否大于或等于提供的值筛选。
like通过在WHERE子句中使用来搜索指定模式的筛选器。
in按属性是否在指定范围内进行筛选。

指定摄取的筛选条件

在确定了源支持的逻辑运算符和查询语言后,可以使用Profile Query Language (PQL)指定要应用于源数据的筛选条件。

在下面的示例中,条件仅应用于与作为参数列出的节点类型所提供的值相等的数据。

{
  "type": "PQL",
  "format": "pql/json",
  "value": {
    "nodeType": "fnApply",
    "fnName": "=",
    "params": [
      {
        "nodeType": "fieldLookup",
        "fieldName": "city"
      },
      {
        "nodeType": "literal",
        "value": "DDN"
      }
    ]
  }
}

预览数据

您可以预览数据,方法是向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}源的基本连接ID。
{TABLE_PATH}要检查的表的path属性。
{FILTERS}您的PQL筛选条件以Base64编码。
请求
curl -X GET \
  'https://platform.adobe.io/data/foundation/flowservice/connections/89d1459e-3cd0-4069-acb3-68f240db4eeb/explore?objectType=table&object=TESTFAS.FASTABLE&preview=true&filters=ewogICJ0eXBlIjogIlBRTCIsCiAgImZvcm1hdCI6ICJwcWwvanNvbiIsCiAgInZhbHVlIjogewogICAgIm5vZGVUeXBlIjogImZuQXBwbHkiLAogICAgImZuTmFtZSI6ICJhbmQiLAogICAgInBhcmFtcyI6IFsKICAgICAgewogICAgICAgICJub2RlVHlwZSI6ICJmbkFwcGx5IiwKICAgICAgICAiZm5OYW1lIjogImxpa2UiLAogICAgICAgICJwYXJhbXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJub2RlVHlwZSI6ICJmaWVsZExvb2t1cCIsCiAgICAgICAgICAgICJmaWVsZE5hbWUiOiAiY2l0eSIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJub2RlVHlwZSI6ICJsaXRlcmFsIiwKICAgICAgICAgICAgInZhbHVlIjogIk0lIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfQogICAgXQogIH0KfQ==\' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {IMS_ORG}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}'
响应

成功的响应将返回数据的内容和结构。

{
  "format": "flat",
  "schema": {
    "columns": [
      {
        "name": "FIRSTNAME",
        "type": "string",
        "xdm": {
          "type": "string"
        }
      },
      {
        "name": "LASTNAME",
        "type": "string",
        "xdm": {
          "type": "string"
        }
      },
      {
        "name": "CITY",
        "type": "string",
        "xdm": {
          "type": "string"
        }
      },
      {
        "name": "AGE",
        "type": "string",
        "xdm": {
          "type": "string"
        }
      },
      {
        "name": "HEIGHT",
        "type": "string",
        "xdm": {
          "type": "string"
        }
      },
      {
        "name": "ISEMPLOYED",
        "type": "boolean",
        "xdm": {
          "type": "boolean"
        }
      },
      {
        "name": "POSTG",
        "type": "boolean",
        "xdm": {
          "type": "boolean"
        }
      },
      {
        "name": "LATITUDE",
        "type": "double",
        "xdm": {
          "type": "number"
        }
      },
      {
        "name": "LONGITUDE",
        "type": "double",
        "xdm": {
          "type": "number"
        }
      },
      {
        "name": "JOINEDDATE",
        "type": "string",
        "meta:xdmType": "date-time",
        "xdm": {
          "type": "string",
          "format": "date-time"
        }
      },
      {
        "name": "CREATEDAT",
        "type": "string",
        "meta:xdmType": "date-time",
        "xdm": {
          "type": "string",
          "format": "date-time"
        }
      },
      {
        "name": "CREATEDATTS",
        "type": "string",
        "meta:xdmType": "date-time",
        "xdm": {
          "type": "string",
          "format": "date-time"
        }
      }
    ]
  },
 "data": [
    {
        "CITY": "MZN",
        "LASTNAME": "Jain",
        "JOINEDDATE": "2022-06-22T00:00:00",
        "LONGITUDE": 1000.222,
        "CREATEDAT": "2022-06-22T17:19:33",
        "FIRSTNAME": "Shivam",
        "POSTG": true,
        "HEIGHT": "169",
        "CREATEDATTS": "2022-06-22T17:19:33",
        "ISEMPLOYED": true,
        "LATITUDE": 2000.89,
        "AGE": "25"
    },
    {
        "CITY": "MUM",
        "LASTNAME": "Kreet",
        "JOINEDDATE": "2022-09-07T00:00:00",
        "LONGITUDE": 10500.01,
        "CREATEDAT": "2022-09-07T17:19:33",
        "FIRSTNAME": "Rakul",
        "POSTG": true,
        "HEIGHT": "155",
        "CREATEDATTS": "2022-09-07T17:19:33",
        "ISEMPLOYED": false,
        "LATITUDE": 2500.89,
        "AGE": "42"
    },
    {
        "CITY": "MAN",
        "LASTNAME": "Lee",
        "JOINEDDATE": "2022-09-14T00:00:00",
        "LONGITUDE": 1000.222,
        "CREATEDAT": "2022-09-14T05:02:33",
        "FIRSTNAME": "Denzel",
        "POSTG": true,
        "HEIGHT": "185",
        "CREATEDATTS": "2022-09-14T05:02:33",
        "ISEMPLOYED": true,
        "LATITUDE": 123.89,
        "AGE": "16"
    }
  ]
}

为过滤的数据创建源连接

要创建源连接并摄取过滤的数据,请对/sourceConnections端点发出POST请求,并在请求正文参数中提供筛选条件。

API格式

POST /sourceConnections
请求

以下请求创建一个源连接以从test1.fasTestTable中摄取数据,其中city = DDN

curl -X POST \
  'https://platform.adobe.io/data/foundation/flowservice/sourceConnections' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \
  -d '{
      "name": "BigQuery Source Connection",
      "description": "Source Connection for Filter test",
      "baseConnectionId": "89d1459e-3cd0-4069-acb3-68f240db4eeb",
      "data": {
        "format": "tabular"
      },
      "params": {
        "tableName": "test1.fasTestTable",
        "filters": {
          "type": "PQL",
          "format": "pql/json",
          "value": {
            "nodeType": "fnApply",
            "fnName": "=",
            "params": [
              {
                "nodeType": "fieldLookup",
                "fieldName": "city"
              },
              {
                "nodeType": "literal",
                "value": "DDN"
              }
            ]
          }
        }
      },
      "connectionSpec": {
        "id": "3c9b37f8-13a6-43d8-bad3-b863b941fedd",
        "version": "1.0"
      }
    }'
响应

成功的响应返回新创建的源连接的唯一标识符(id)。

{
    "id": "b7581b59-c603-4df1-a689-d23d7ac440f3",
    "etag": "\"ef05d265-0000-0200-0000-6019e0080000\""
}

筛选Marketo Engage的活动实体

使用Marketo Engage 源连接器时,可以使用行级筛选来筛选活动实体。 目前,您只能筛选活动实体和标准活动类型。 自定义活动在Marketo 字段映射下仍受管理。

Marketo标准活动类型

下表概述了Marketo的标准活动类型。 使用此表作为筛选条件的参考。

活动类型标识活动类型名称
1访问网页
2填写表单
3单击链接
6发送电子邮件
7电子邮件已送达
8电子邮件退回
9取消订阅电子邮件
10打开电子邮件
11单击电子邮件
12新商机
21转化商机
22更改分数
24添加到列表
25从列表中删除
27电子邮件软退信
32合并商机
34添加到机会
35从机会中移除
36更新机会
46有趣的时刻
101更改收入阶段
104进程中的更改状态
110调用 Webhook
113添加到培养
114更改培养轨迹
115更改培养节奏

使用Marketo源连接器时,请按照以下步骤筛选标准活动实体。

创建草稿数据流

首先,创建Marketo 数据流并将其另存为草稿。 有关如何创建草稿数据流的详细步骤,请参阅以下文档:

检索您的数据流ID

创建完草稿的数据流后,您必须检索其对应的ID。

在用户界面中,导航到源目录,然后从顶部标题中选择​ 数据流。 使用状态列可识别在草稿模式下保存的所有数据流,然后选择数据流的名称。 接下来,使用右侧的​ 属性 ​面板来查找您的数据流ID。

检索数据流详细信息

接下来,必须检索数据流详细信息,尤其是与数据流关联的源连接ID。 要检索数据流详细信息,请向/flows端点发出GET请求,并提供您的数据流ID作为path参数。

API格式

GET /flows/{FLOW_ID}
参数描述
{FLOW_ID}要检索的数据流的ID。
请求

以下请求检索有关数据流ID的信息: a7e88a01-40f9-4ebf-80b2-0fc838ff82ef

curl -X GET \
  'https://platform.adobe.io/data/foundation/flowservice/flows/a7e88a01-40f9-4ebf-80b2-0fc838ff82ef' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}'
响应

成功的响应将返回数据流详细信息,包括其相应的源连接和目标连接的信息。 您必须记下源连接ID和目标连接ID,因为稍后需要使用这些值才能发布数据流。

{
    "items": [
        {
            "id": "a7e88a01-40f9-4ebf-80b2-0fc838ff82ef",
            "createdAt": 1728592929650,
            "updatedAt": 1728597187444,
            "createdBy": "acme@AdobeID",
            "updatedBy": "acme@AdobeID",
            "createdClient": "exc_app",
            "updatedClient": "acme",
            "sandboxId": "7f3419ce-53e2-476b-b419-ce53e2376b02",
            "sandboxName": "prod",
            "imsOrgId": "acme@AdobeOrg",
            "name": "Marketo Engage Standard Activities ACME",
            "description": "",
            "flowSpec": {
                "id": "15f8402c-ba66-4626-b54c-9f8e54244d61",
                "version": "1.0"
            },
            "state": "enabled",
            "version": "\"600290fc-0000-0200-0000-67084cc30000\"",
            "etag": "\"600290fc-0000-0200-0000-67084cc30000\"",
            "sourceConnectionIds": [
                "56f7eb3a-b544-4eaa-b167-ef1711044c7a"
            ],
            "targetConnectionIds": [
                "7e53e6e8-b432-4134-bb29-21fc6e8532e5"
            ],
            "inheritedAttributes": {
                "properties": {
                    "isSourceFlow": true
                },
                "sourceConnections": [
                    {
                        "id": "56f7eb3a-b544-4eaa-b167-ef1711044c7a",
                        "connectionSpec": {
                            "id": "bf1f4218-73ce-4ff0-b744-48d78ffae2e4",
                            "version": "1.0"
                        },
                        "baseConnection": {
                            "id": "0137118b-373a-4c4e-847c-13a0abf73b33",
                            "connectionSpec": {
                                "id": "bf1f4218-73ce-4ff0-b744-48d78ffae2e4",
                                "version": "1.0"
                            }
                        }
                    }
                ],
                "targetConnections": [
                    {
                        "id": "7e53e6e8-b432-4134-bb29-21fc6e8532e5",
                        "connectionSpec": {
                            "id": "c604ff05-7f1a-43c0-8e18-33bf874cb11c",
                            "version": "1.0"
                        }
                    }
                ]
            },
            "options": {
                "isSampleDataflow": false,
                "errorDiagnosticsEnabled": true
            },
            "transformations": [
                {
                    "name": "Mapping",
                    "params": {
                        "mappingVersion": 0,
                        "mappingId": "f6447514ef95482889fac1818972e285"
                    }
                }
            ],
            "runs": "/runs?property=flowId==a7e88a01-40f9-4ebf-80b2-0fc838ff82ef",
            "lastOperation": {
                "started": 1728592929650,
                "updated": 0,
                "operation": "create"
            },
            "lastRunDetails": {
                "id": "2d7863d5-ca4d-4313-ac52-2603eaf2cdbe",
                "state": "success",
                "startedAtUTC": 1728594713537,
                "completedAtUTC": 1728597183080
            },
            "labels": [],
            "recordTypes": [
                {
                    "type": "experienceevent",
                    "extensions": {}
                }
            ]
        }
    ]
}

检索源连接详细信息

接下来,使用您的源连接ID并向/sourceConnections端点发出GET请求以检索您的源连接详细信息。

API格式

GET /sourceConnections/{SOURCE_CONNECTION_ID}
参数描述
{SOURCE_CONNECTION_ID}要检索的源连接的ID。
请求
curl -X GET \
  'https://platform.adobe.io/data/foundation/flowservice/sourceConnections/56f7eb3a-b544-4eaa-b167-ef1711044c7a' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}'
响应

成功的响应将返回源连接的详细信息。 记下版本,因为您在下一步中需要此值以更新源连接。

{
    "items": [
        {
            "id": "b85b895f-a289-42e9-8fe1-ae448ccc7e53",
            "createdAt": 1729634331185,
            "updatedAt": 1729634331185,
            "createdBy": "acme@AdobeID",
            "updatedBy": "acme@AdobeID",
            "createdClient": "exc_app",
            "updatedClient": "acme",
            "sandboxId": "7f3419ce-53e2-476b-b419-ce53e2376b02",
            "sandboxName": "prod",
            "imsOrgId": "acme@AdobeOrg",
            "name": "New Source Connection - 2024-10-23T03:28:50+05:30",
            "description": "Source connection created from the workflow",
            "baseConnectionId": "fd9f7455-1e23-4831-9283-7717e20bee40",
            "state": "draft",
            "data": {
                "format": "tabular",
                "schema": null,
                "properties": null
            },
            "connectionSpec": {
                "id": "2d31dfd1-df1a-456b-948f-226e040ba102",
                "version": "1.0"
            },
            "params": {
                "columns": [],
                "tableName": "Activity"
            },
            "version": "\"210068a6-0000-0200-0000-6718201b0000\"",
            "etag": "\"210068a6-0000-0200-0000-6718201b0000\"",
            "inheritedAttributes": {
                "baseConnection": {
                    "id": "fd9f7455-1e23-4831-9283-7717e20bee40",
                    "connectionSpec": {
                        "id": "2d31dfd1-df1a-456b-948f-226e040ba102",
                        "version": "1.0"
                    }
                }
            },
            "lastOperation": {
                "started": 1729634331185,
                "updated": 0,
                "operation": "draft_create"
            }
        }
    ]
}

使用筛选条件更新源连接

现在您有了源连接ID及其相应版本,接下来可以使用指定标准活动类型的过滤条件发出PATCH请求。

要更新源连接,请向/sourceConnections端点发出PATCH请求,并提供源连接ID作为查询参数。 此外,您必须提供一个If-Match标头参数,以及源连接的相应版本。

TIP
发出PATCH请求时需要使用If-Match标头。 此标头的值是要更新的数据流的唯一版本/电子标记。 每次成功更新数据流时,版本/电子标记值都会更新。

API格式

PATCH /sourceConnections/{SOURCE_CONNECTION_ID}
参数描述
{SOURCE_CONNECTION_ID}要更新的源连接的ID
请求
curl -X PATCH \
  'https://platform.adobe.io/data/foundation/flowservice/sourceConnections/56f7eb3a-b544-4eaa-b167-ef1711044c7a' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'If-Match: {VERSION_HERE}'
  -d '
      {
        "op": "add",
        "path": "/params/filters",
        "value": {
            "type": "PQL",
            "format": "pql/json",
            "value": {
                "nodeType": "fnApply",
                "fnName": "in",
                "params": [
                    {
                        "nodeType": "fieldLookup",
                        "fieldName": "activityType"
                    },
                    {
                        "nodeType": "literal",
                        "value": [
                            "Change Status in Progression",
                            "Fill Out Form"
                        ]
                    }
                ]
            }
        }
    }'
响应

成功的响应将返回源连接ID和etag(版本)。

{
    "id": "56f7eb3a-b544-4eaa-b167-ef1711044c7a",
    "etag": "\"210068a6-0000-0200-0000-6718201b0000\""
}

发布源连接

利用筛选条件更新源连接,您现在可以从草稿状态继续并发布源连接。 为此,请向/sourceConnections端点发出POST请求,并提供草稿源连接的ID以及用于发布的操作操作。

API格式

POST /sourceConnections/{SOURCE_CONNECTION_ID}/action?op=publish
参数描述
{SOURCE_CONNECTION_ID}要发布的源连接的ID。
op更新查询源连接的状态的操作操作。 要发布草稿源连接,请将op设置为publish
请求

以下请求将发布起草的源连接。

curl -X POST \
  'https://platform.adobe.io/data/foundation/flowservice/sourceConnections/56f7eb3a-b544-4eaa-b167-ef1711044c7a/action?op=publish' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
响应

成功的响应将返回源连接ID和etag(版本)。

{
    "id": "56f7eb3a-b544-4eaa-b167-ef1711044c7a",
    "etag": "\"9f007f7b-0000-0200-0000-670ef1150000\""
}

发布目标连接

与上一步类似,您还必须发布目标连接,才能继续并发布草稿数据流。 向/targetConnections端点发出POST请求,并提供要发布的草稿目标连接的ID以及用于发布的操作操作。

API格式

POST /targetConnections/{TARGET_CONNECTION_ID}/action?op=publish
参数描述
{TARGET_CONNECTION_ID}要发布的目标连接的ID。
op更新查询的目标连接的状态的操作操作。 要发布草稿目标连接,请将op设置为publish
请求

以下请求发布了ID为7e53e6e8-b432-4134-bb29-21fc6e8532e5的目标连接。

curl -X POST \
  'https://platform.adobe.io/data/foundation/flowservice/connections/7e53e6e8-b432-4134-bb29-21fc6e8532e5/action?op=publish' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
响应

成功的响应将返回已发布目标连接的ID和相应的电子标记。

{
    "id": "7e53e6e8-b432-4134-bb29-21fc6e8532e5",
    "etag": "\"8e000533-0000-0200-0000-5f3c40fd0000\""
}

发布数据流

在源和目标连接均已发布的情况下,您现在可以继续最后步骤并发布数据流。 要发布数据流,请对/flows端点发出POST请求,并提供数据流ID和用于发布的操作操作。

API格式

POST /flows/{FLOW_ID}/action?op=publish
参数描述
{FLOW_ID}要发布的数据流的ID。
op更新查询数据流状态的操作操作。 要发布草稿数据流,请将op设置为publish
请求

以下请求将发布您的草稿数据流。

curl -X POST \
  'https://platform.adobe.io/data/foundation/flowservice/flows/a7e88a01-40f9-4ebf-80b2-0fc838ff82ef/action?op=publish' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
响应

成功的响应将返回数据流的ID和相应的etag

{
  "id": "a7e88a01-40f9-4ebf-80b2-0fc838ff82ef",
  "etag": "\"4b0354b7-0000-0200-0000-6716ce1f0000\""
}

您可以使用Experience Platform UI验证草稿数据流是否已发布。 导航到源目录中的数据流页面并引用数据流的​ 状态。 如果成功,状态现在应设置为​ 已启用

TIP
  • 启用了过滤的数据流将只回填一次。 您在筛选条件中所做的任何更改(无论是添加还是删除)都只能对增量数据生效。
  • 如果需要摄取任何新活动类型的历史数据,建议您创建新数据流,并在筛选条件中使用相应的活动类型定义筛选条件。
  • 您无法筛选自定义活动类型。
  • 无法预览过滤的数据。

附录

本节提供了用于筛选的不同有效负载的进一步示例。

奇异条件

对于只需要一个条件的方案,可以省略初始fnApply

选择以查看示例
{
  "type": "PQL",
  "format": "pql/json",
  "value": {
    "nodeType": "fnApply",
    "fnName": "like",
    "params": [
      {
        "nodeType": "fieldLookup",
        "fieldName": "firstname"
      },
      {
        "nodeType": "literal",
        "value": "%s"
      }
    ]
  }
}

使用in运算符

有关运算符in的示例,请参阅下面的示例有效负载。

选择以查看示例
{
  "type": "PQL",
  "format": "pql/json",
  "value": {
    "nodeType": "fnApply",
    "fnName": "and",
    "params": [
      {
        "nodeType": "fnApply",
        "fnName": "in",
        "params": [
          {
            "nodeType": "fieldLookup",
            "fieldName": "firstname"
          },
          {
            "nodeType": "literal",
            "value": [
              "Ramen",
              "John"
            ]
          }
        ]
      }
    ]
  }
}