[Ultimate]{class="badge positive"}

Snowflake流源

IMPORTANT
  • Snowflake流源在API中可供已购买Real-Time CDP Ultimate的用户使用。

  • 在Amazon Web Services (AWS)上运行Adobe Experience Platform时,您现在可以使用Snowflake流源。 在AWS上运行的Experience Platform当前仅对有限数量的客户可用。 要了解有关支持的Experience Platform基础架构的更多信息,请参阅Experience Platform multi-cloud概述

Adobe Experience Platform 允许从外部源摄取数据,同时让您能够使用 Experience Platform 服务来构建、标记和增强传入数据。您可以从各种源(如Adobe应用程序、基于云的存储、数据库和许多其他源)中摄取数据。

Experience Platform支持从Snowflake数据库流式传输数据。

了解Snowflake流源

Snowflake流源通过定期执行SQL查询并为结果集中的每一行创建输出记录来加载数据。

通过使用Kafka Connect,Snowflake流源将跟踪它从每个表中收到的最新记录,以便它可以在下一个迭代的正确位置开始。 源使用此功能来筛选数据,并且只从每个迭代上的表中获取更新的行。

先决条件

以下部分概述了在将数据从Snowflake数据库流式传输到Experience Platform之前需要完成的先决步骤:

IP地址允许列表

在将源连接到Experience Platform之前,必须将特定于区域的IP地址添加到允许列表。 有关详细信息,请阅读有关将IP地址列入允许列表到Experience Platform的指南。

以下文档提供了有关如何使用API或用户界面将Amazon Redshift连接到Experience Platform的信息:

收集所需的凭据

为了使Flow Service与Snowflake连接,您必须提供以下连接属性:

基本身份验证
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2
凭据 描述
account

Snowflake帐户的完整帐户标识符(帐户名称或帐户定位器)附加了后缀snowflakecomputing.com。 帐户标识符可以具有不同的格式:

  • {ORG_NAME}-{ACCOUNT_NAME}.snowflakecomputing.com (如acme-abc12345.snowflakecomputing.com
  • {ACCOUNT_LOCATOR}。{CLOUD_REGION_ID}.snowflakecomputing.com (如acme12345.ap-southeast-1.snowflakecomputing.com
  • {ACCOUNT_LOCATOR}。{CLOUD_REGION_ID}。{CLOUD}.snowflakecomputing.com (如acme12345.east-us-2.azure.snowflakecomputing.com

有关详细信息,请阅读Snowflake document on account identifiers

warehouse Snowflake仓库管理应用程序的查询执行过程。 每个Snowflake仓库彼此独立,在将数据传送到Experience Platform时必须单独访问。
database Snowflake数据库包含要带Experience Platform的数据。
username Snowflake帐户的用户名。
password Snowflake用户帐户的密码。
role (可选)可以为给定连接的用户提供自定义角色。 如果未提供,此值默认为public
connectionSpec.id 连接规范返回源的连接器属性,包括与创建基础连接和源连接相关的验证规范。 Snowflake的连接规范ID为51ae16c2-bdad-42fd-9fce-8d5dfddaf140
密钥对身份验证

要使用密钥对身份验证,您必须生成一个2048位RSA密钥对,然后在为Snowflake源创建帐户时提供以下值。

table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2
凭据 描述
account 帐户名称可唯一标识组织内的帐户。 在这种情况下,您必须跨不同的Snowflake组织唯一标识帐户。 要实现此目的,您必须在帐户名称前添加组织名称。 例如: orgname-account_name。 请阅读有关检索 Snowflake 帐户标识符的指南,以获取其他指导。 有关更多信息,请参阅Snowflake 文档
username Snowflake帐户的用户名。
privateKey Base64-帐户的Snowflake编码私钥。 您可以生成加密或未加密的私钥。 如果您使用的是加密的私钥,那么在针对Experience Platform进行身份验证时,还必须提供私钥密码。 有关详细信息,请阅读检索 Snowflake 私钥的指南。
passphrase 密码短语是附加的安全层,在使用加密的私钥进行身份验证时必须使用该安全层。 如果您使用未加密的私钥,则无需提供密码。
database 包含要摄取到Experience Platform的数据的Snowflake数据库。
warehouse Snowflake仓库管理应用程序的查询执行过程。 每个Snowflake仓库彼此独立,在将数据传送到Experience Platform时必须单独访问。

有关这些值的详细信息,请参阅Snowflake 密钥对身份验证指南

检索帐户标识符 retrieve-your-account-identifier

要通过Experience Platform验证您的Snowflake实例,您需要从Snowflake UI仪表板获取帐户标识符。

按照以下步骤查找您的帐户标识符:

  • Snowflake 应用程序UI仪表板上导航到您的帐户。
  • 在左侧导航中,选择​ Accounts,然后从标题中选择​ Active Accounts
  • 接下来,选择信息图标,然后选择并复制当前URL的域名。

检索您的私钥 retrieve-your-private-key

如果您计划对Snowflake连接使用密钥对身份验证,则需要在连接到Experience Platform之前生成私钥。

创建加密的私钥

要生成加密的Snowflake私钥,请在终端上运行以下命令:

code language-shell
openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8

如果成功,您应会收到PEM格式的私钥。

code language-shell
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIE6T...
-----END ENCRYPTED PRIVATE KEY-----
创建未加密的私钥

要生成未加密的Snowflake私钥,请在终端上运行以下命令:

code language-shell
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt

如果成功,您应会收到PEM格式的私钥。

code language-shell
-----BEGIN PRIVATE KEY-----
MIIE6T...
-----END PRIVATE KEY-----

生成私钥后,直接在Base64中对其进行编码,而不对其格式或内容进行任何更改。 在编码之前,请确保私钥的末尾没有额外的空格或空行(包括尾随新行)。

验证配置

在为Snowflake数据创建源连接之前,还必须确保满足以下配置:

  • 分配给给定用户的默认仓库必须与在向Experience Platform进行身份验证时输入的仓库相同。
  • 分配给给定用户的默认角色必须有权访问在对Experience Platform进行身份验证时输入的同一数据库。

要验证您的角色和仓库,请执行以下操作:

  • 在左侧导航中选择​ Admin,然后选择​ Users & Roles
  • 选择相应的用户,然后选择右上角的省略号(...)。
  • 在出现的Edit user窗口中,导航到Default Role以查看与给定用户关联的角色。
  • 在同一窗口中,导航到Default Warehouse以查看与给定用户关联的仓库。

成功编码后,您可以在Experience Platform上使用该已编码的Base64私钥来验证您的Snowflake帐户。

配置角色设置 configure-role-settings

即使分配了默认公共角色,也必须配置角色的权限,以允许源连接访问相关Snowflake数据库、架构和表。 不同Snowflake实体的各种权限如下所示:

Snowflake实体
需要角色权限
仓库
操作、使用
数据库
使用情况
架构
使用情况
选择
NOTE
必须在仓库的高级设置配置中启用自动恢复和自动暂停。

有关角色和权限管理的详细信息,请参阅Snowflake API参考

限制和常见问题解答 limitations-and-frequently-asked-questions

  • Snowflake源的数据吞吐量为每秒2000条记录。

  • 根据仓库的活动时间和仓库的大小,定价可能会有所不同。 对于Snowflake源集成,最小大小x小仓库就足够了。 建议启用自动暂停,以便仓库在不使用时能够自行暂停。

  • Snowflake源每10秒轮询数据库一次新数据。

  • 配置选项:

    • 创建源连接时,您可以为backfill源启用Snowflake布尔标记。

      • 如果回填设置为true ,则timestamp.initial的值将设置为0。 这意味着获取时间戳列大于0纪元时间的数据。
      • 如果回填设置为false,则timestamp.initial的值将设置为–1。 这意味着获取时间戳列大于当前时间(源开始摄取的时间)的数据。
    • 时间戳列的格式应该是: TIMESTAMP_LTZTIMESTAMP_NTZ。 如果时间戳列设置为TIMESTAMP_NTZ,则应通过timezoneValue参数传递存储值的相应时区。 如果未提供,该值将默认为UTC。

      • TIMESTAMP_TZ不能用于时间戳列或映射。

后续步骤

NOTE
创建或更新流数据流后,需要短暂暂停数据摄取5分钟,以防出现任何潜在的数据丢失或数据丢失情况。

以下教程提供了有关如何使用API将Snowflake流源连接到Experience Platform的步骤:

recommendation-more-help
337b99bb-92fb-42ae-b6b7-c7042161d089