Openflow Connector for Salesforce Bulk API: Salesforce 수식 필드

참고

이 커넥터에는 `Snowflake Connector 약관<https://www.snowflake.com/legal/snowflake-connector-terms/>`_이 적용됩니다.

이 항목에서는 지원되는 함수 및 제한 사항을 포함하여 Openflow Connector for Salesforce Bulk API 가 Salesforce 수식 필드를 Snowflake SQL 뷰로 변환하는 방법에 대해 설명합니다.

수식 뷰의 작동 방식

:ui:`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``로 변환됨)

  • 비교: =, ==, !=, <>, <, <=, >, >=

  • 논리: AND, OR, &&, ||

  • 문자열 연결:&``(``COALESCE Null 처리로 ``||``로 변환됨)

  • 단항: -``(부정), ``NOT

지원되지 않는 수식 구문

다음 수식 구문은 아직 지원되지 않습니다. 추가 함수 및 구문에 대한 지원은 향후 릴리스에서 추가될 예정입니다. 수식에서 이러한 구문을 사용하는 경우 뷰의 해당 열은 ``NULL``을 반환하고 열 설명은 실패 이유를 나타냅니다.

실패 이유

설명

FUNCTION_NOT_SUPPORTED

이 수식은 Snowflake에 동등한 함수가 없는 함수 또는 Salesforce UI에 특화된 함수를 사용합니다. 여기에는 다음이 포함됩니다. IMAGE, HYPERLINK, URLFOR, HTMLENCODE, JSENCODE, LINKTO, GEOLOCATION, DISTANCE, VLOOKUP, REGEX, PREDICT, GETSESSIONID, GETRECORDIDS, REQUIRESCRIPT, ISCHANGED, ISNEW, ISCLONE, PRIORVALUE.

GLOBAL_VARIABLE_NOT_SUPPORTED

수식이 $User.Name, $Organization.Name 또는 ``$Profile.Name``과 같은 Salesforce 전역 변수를 참조합니다. Snowflake에는 이러한 변수에 해당하는 변수가 없습니다.

FORMULA_CHAIN_NOT_SUPPORTED

수식이 다른 수식 필드를 참조합니다. 연결된 수식 참조(다른 수식 필드에 종속된 수식 필드)는 지원되지 않습니다.

ROLLUP_NOT_SUPPORTED

필드가 수식 필드가 아닌 롤업 요약 필드입니다. 롤업 요약은 하위 레코드의 데이터를 집계하며 간단한 SQL 뷰로 표현할 수 없습니다.

LOOKUP_NOT_SYNCED

수식이 Salesforce 오브젝트 메타데이터에서 확인할 수 없는 관계를 참조합니다. 이는 일반적으로 수식의 관계 이름이 오브젝트의 알려진 관계와 일치하지 않을 때 발생합니다.

ID_FORMAT_MISMATCH

수식에 하드코딩된 15자 Salesforce ID가 포함되어 있습니다. Salesforce는 내부적으로 15자 IDs를 사용하지만 대량 API는 18자 IDs를 반환합니다. 하드코딩된 15자 IDs가 있는 수식은 안정적으로 변환할 수 없습니다.

COMPOUND_FIELD_REFERENCE

수식이 Snowflake에 단일 열로 저장되지 않는 복합 필드(예: MailingAddress)를 참조합니다.

PARSE_ERROR

수식을 구문 분석할 수 없습니다. 이는 커넥터가 아직 인식하지 못하는 구문을 나타낼 수 있습니다.

UNSUPPORTED_SYNTAX

수식이 인식되지만 번역할 수 없는 구문을 사용합니다(예: 인자가 3개 미만인 IF 함수).