Openflow Connector for Salesforce Bulk API:选择使用 时默认使用的角色和仓库。Salesforce 公式字段

备注

此连接器受 Snowflake 连接器条款 的约束。

本主题介绍 Openflow Connector for Salesforce Bulk API 如何将 Salesforce 公式字段转换为 Snowflake 的 SQL 视图,包括所支持的函数及限制条件。

公式视图的工作原理

Enable Views Creation 设置为 true 时,连接器会对具有公式字段的每个对象执行以下操作:

  1. 通过 Describe API 从 Salesforce 对象元数据中获取公式表达式。

  2. 解析每个公式表达式,并将其转换为等效的 Snowflake SQL 语句。

  3. 生成一条 CREATE OR REPLACE VIEW 语句,将基表中的非公式列与转换后的公式表达式(作为计算列)结合在一起。

  4. 针对 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 等效项

逻辑

IF

CASE WHEN ... THEN ... ELSE ... END

逻辑

CASE

CASE ... WHEN ... THEN ... ELSE ... END

逻辑

AND / OR / NOT

AND / OR / NOT

null 处理

ISBLANK

LENGTH(COALESCE(expr, '')) = 0

null 处理

ISNULL

expr IS NULL

null 处理

NULLVALUE

COALESCE

null 处理

BLANKVALUE

CASE WHEN ... IS NULL OR LENGTH(...) = 0 THEN ... END

文本

LEFT

LEFT

文本

RIGHT

RIGHT

文本

MID

SUBSTR

文本

LEN

LENGTH

文本

SUBSTITUTE

REPLACE

文本

TRIM

TRIM

文本

UPPER

UPPER

文本

LOWER

LOWER

文本

CONTAINS

CONTAINS

文本

BEGINS

STARTSWITH

文本

FIND

CHARINDEX

文本

LPAD

LPAD

文本

RPAD

RPAD

文本

BR

换行符字面量

转换

TEXT

CAST(... AS STRING)

转换

VALUE

TRY_CAST(... AS NUMBER)

数学

ABS

ABS

数学

ROUND

ROUND

数学

CEILING

CEIL

数学

FLOOR

FLOOR

数学

MOD

MOD

数学

SQRT

SQRT

数学

MAX

GREATEST

数学

MIN

LEAST

数学

LOG

LOG(10, ...)

数学

EXP

EXP

数学

LN

LN

日期和时间

NOW

CURRENT_TIMESTAMP()

日期和时间

TODAY

CURRENT_DATE()

日期和时间

YEAR

YEAR

日期和时间

MONTH

MONTH

日期和时间

DAY

DAY

日期和时间

DATEVALUE

TO_DATE

日期和时间

DATETIMEVALUE

TO_TIMESTAMP

日期和时间

ADDMONTHS

DATEADD(MONTH, ...)

选项列表

ISPICKVAL

COALESCE(field, '') = COALESCE(value, '')

除函数外,还支持以下运算符:

  • 算术:+-*/^``(取幂,转换为 ``POWER

  • 比较:===!=<><<=>>=

  • 逻辑:ANDOR&&||

  • 字符串连接:&``(转换为带有 ``COALESCE 空值处理的 ||

  • 一元运算符:-``(取反)、``NOT

不支持的公式结构

尚不支持以下公式结构。未来版本将添加对其他函数和结构的支持。当公式使用到这些功能时,视图中的相应列将返回 NULL,同时列注释会说明失败原因。

失败原因

描述

FUNCTION_NOT_SUPPORTED

该公式使用了在 Snowflake 中没有对应功能的函数,或是 Salesforce UI 特有的函数。其中包括:IMAGEHYPERLINKURLFORHTMLENCODEJSENCODELINKTOGEOLOCATIONDISTANCEVLOOKUPREGEXPREDICTGETSESSIONIDGETRECORDIDSREQUIRESCRIPTISCHANGEDISNEWISCLONEPRIORVALUE

GLOBAL_VARIABLE_NOT_SUPPORTED

该公式引用 Salesforce 全局变量,例如 $User.Name$Organization.Name$Profile.Name。这些变量在 Snowflake 中没有等效变量。

FORMULA_CHAIN_NOT_SUPPORTED

公式引用另一个公式字段。不支持链式公式引用(依赖于另一个公式字段的公式字段)。

ROLLUP_NOT_SUPPORTED

该字段是汇总字段,而非公式字段。汇总字段是对子记录数据的聚合,无法用简单的 SQL 视图来表达。

LOOKUP_NOT_SYNCED

该公式引用了无法从 Salesforce 对象元数据解析的关系。这通常发生在公式中的关系名称与对象上的任何已知关系都不匹配的情况下。

ID_FORMAT_MISMATCH

公式包含硬编码的 15 位 Salesforce ID。Salesforce 内部使用 15 位 IDs,但 Bulk API 返回的是 18 位 IDs。包含硬编码 15 位 IDs 的公式无法可靠地进行转换。

COMPOUND_FIELD_REFERENCE

该公式引用了一个复合字段(例如 MailingAddress),而该字段在 Snowflake 中并非以单个列的形式存储。

PARSE_ERROR

无法解析公式表达式。这可能表示连接器尚无法识别的语法。

UNSUPPORTED_SYNTAX

该公式使用了可识别但无法转换的语法结构(例如,实参少于三个的 IF 函数)。