У нас есть одна таблица Opportunity
в salesforce, и у этой таблицы есть один вычисляемый столбец, называемый "Is_XYZ
".
Расчетная формула для столбца "Is_XYZ
" -
calculatedFormula: IF(
AND(
OR(
AND(
UPPER(LeadSource__c) == 'XYZ',
DateValue(CreatedDate) > Date(2017,01,01)
),
AND( Is_PQR ,
IF(
Effective_Date__c <> null,
DateValue(CreatedDate) > Effective_Date__c ,
TRUE
),
IF(
Effective_Date__c <> null,
Effective_Date__c <= TODAY(),
TRUE
)
)
),
UPPER(MailingState) <> 'NY',
UPPER(Lead_Sub_Source__c) <> 'PQRS'
),
TRUE,
FALSE
)
Мы создали такую же таблицу Opportunity
в Hive SQL, и мы хотим написать запрос на выборку для вычисления значения столбца «Is_XYZ». Мы преобразовали формулу из синтаксиса Salesforce в синтаксис SQL.
Итак, формула в SQL будет -
SELECT
IF(
(
(
( UPPER(LeadSource__c) == 'XYZ' AND
CreatedDate > '2017-01-01'
)
OR
( Is_PQR AND
IF( Effective_Date__c IS NOT NULL,
CreatedDate > Effective_Date__c,
TRUE
)
AND
IF( Effective_Date__c IS NOT NULL,
Effective_Date__c <= current_date,
TRUE
)
)
)
AND (UPPER(MailingState) <> 'NY')
AND (UPPER(Lead_Sub_Source__c) <> 'PQRS')
),
TRUE,
FALSE
) as Is_XYZ
FROM Opportunity;
Можете ли вы помочь мне подтвердить, что обе формулы (salesforce и SQL) совпадают? Я имею в виду, можете ли вы проверить, что обе приведенные выше формулы делают одно и то же.
Я протестировал его с обеих сторон (salesforce и Hive SQL), и он ведет себя по-разному. Значения для этого случая -
LeadSource__c = abcdef
Lead_Sub_Source__c = klmnop
CreatedDate = 2019-04-02T00:06:49.000Z
MailingState = HI
Is_PQR = true
Effective_Date__c = 2019-04-09
Для указанных выше значений Salesforce отображает Is_XYZ = true
и Улей отображает Is_XYZ = false
. Пожалуйста, помогите мне определить проблему.