Openflow Connector for Salesforce Bulk API:选择使用 时默认使用的角色和仓库。Salesforce 公式字段¶
备注
此连接器受 Snowflake 连接器条款 的约束。
本主题介绍 Openflow Connector for Salesforce Bulk API 如何将 Salesforce 公式字段转换为 Snowflake 的 SQL 视图,包括所支持的函数及限制条件。
公式视图的工作原理¶
当 Enable Views Creation 设置为 true 时,连接器会对具有公式字段的每个对象执行以下操作:
通过 Describe API 从 Salesforce 对象元数据中获取公式表达式。
解析每个公式表达式,并将其转换为等效的 Snowflake SQL 语句。
生成一条
CREATE OR REPLACE VIEW语句,将基表中的非公式列与转换后的公式表达式(作为计算列)结合在一起。针对 Snowflake 运行该 DDL,以创建或更新视图。
生成的视图命名为 <Object Type>_FORMULA_VW。例如,Account 对象生成一个名为 ACCOUNT_FORMULA_VW 的视图。您可以查询此视图,以获取公式字段值以及复制的数据。
每当连接器检测到源对象中的架构变更时,该视图会自动更新,从而确保公式定义与 Salesforce 保持同步。
跨对象公式字段¶
Salesforce 公式可以通过关系遍历来引用相关对象中的字段(例如 Account.Owner.Name)。连接器通过在视图定义中生成 LEFT JOIN 子句来支持这些跨对象引用。每次关系遍历都会生成与 Snowflake 中相应相关表的联接。
要使跨对象公式正常工作,连接器还必须复制相关对象。在转换时,连接器不会检查所引用的表是否存在于 Snowflake 中。如果相关对象未同步,生成的 CREATE OR REPLACE VIEW 语句将引用一个在 Snowflake 中不存在的表,从而导致视图创建失败。要解决此问题,请确保公式字段所引用的所有相关对象都包含在 Filter 参数中。一旦所引用的表存在,连接器将在下一次运行时自动重新创建该视图。
公式视图列注释¶
生成的视图中每个公式列都包含一个 SQL COMMENT 注释:
对于成功转换的公式,注释中包含原始的 Salesforce 公式表达式。
对于无法转换的公式,注释包含失败原因代码。
您可以在 Snowflake 中运行 DESCRIBE VIEW <view_name> 来查看这些注释。
支持的公式函数¶
以下 Salesforce 公式函数已转换为等效的 Snowflake SQL:
类别 |
Salesforce 函数 |
Snowflake 等效项 |
|---|---|---|
逻辑 |
|
|
逻辑 |
|
|
逻辑 |
|
|
null 处理 |
|
|
null 处理 |
|
|
null 处理 |
|
|
null 处理 |
|
|
文本 |
|
|
文本 |
|
|
文本 |
|
|
文本 |
|
|
文本 |
|
|
文本 |
|
|
文本 |
|
|
文本 |
|
|
文本 |
|
|
文本 |
|
|
文本 |
|
|
文本 |
|
|
文本 |
|
|
文本 |
|
换行符字面量 |
转换 |
|
|
转换 |
|
|
数学 |
|
|
数学 |
|
|
数学 |
|
|
数学 |
|
|
数学 |
|
|
数学 |
|
|
数学 |
|
|
数学 |
|
|
数学 |
|
|
数学 |
|
|
数学 |
|
|
日期和时间 |
|
|
日期和时间 |
|
|
日期和时间 |
|
|
日期和时间 |
|
|
日期和时间 |
|
|
日期和时间 |
|
|
日期和时间 |
|
|
日期和时间 |
|
|
选项列表 |
|
|
除函数外,还支持以下运算符:
算术:
+、-、*、/、^``(取幂,转换为 ``POWER)比较:
=、==、!=、<>、<、<=、>、>=逻辑:
AND、OR、&&、||字符串连接:
&``(转换为带有 ``COALESCE空值处理的||)一元运算符:
-``(取反)、``NOT
不支持的公式结构¶
尚不支持以下公式结构。未来版本将添加对其他函数和结构的支持。当公式使用到这些功能时,视图中的相应列将返回 NULL,同时列注释会说明失败原因。
失败原因 |
描述 |
|---|---|
|
该公式使用了在 Snowflake 中没有对应功能的函数,或是 Salesforce UI 特有的函数。其中包括: |
|
该公式引用 Salesforce 全局变量,例如 |
|
公式引用另一个公式字段。不支持链式公式引用(依赖于另一个公式字段的公式字段)。 |
|
该字段是汇总字段,而非公式字段。汇总字段是对子记录数据的聚合,无法用简单的 SQL 视图来表达。 |
|
该公式引用了无法从 Salesforce 对象元数据解析的关系。这通常发生在公式中的关系名称与对象上的任何已知关系都不匹配的情况下。 |
|
公式包含硬编码的 15 位 Salesforce ID。Salesforce 内部使用 15 位 IDs,但 Bulk API 返回的是 18 位 IDs。包含硬编码 15 位 IDs 的公式无法可靠地进行转换。 |
|
该公式引用了一个复合字段(例如 |
|
无法解析公式表达式。这可能表示连接器尚无法识别的语法。 |
|
该公式使用了可识别但无法转换的语法结构(例如,实参少于三个的 |