[英]How to get calculated value from cell formula in Maatwebsite Laravel Excel?
[英]How to convert calculated formula from salesforce to SQL
我们在salesforce中有一个“ Opportunity
表,该表有一个计算所得的列,称为“ 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
)
我们已经在Hive SQL中创建了相同的Opportunity
表,并且我们想编写选择查询来计算“ 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
。 请帮助我确定问题。
我可以判断出日期/时间算术不正确,原因是值上存在时间分量。 我不知道这是否与您的不良示例有关。
例如:
DateValue(CreatedDate) > Date(2017,01,01)
不等于:
CreatedDate > '2017-01-01'
等价于:
CreatedDate >= '2017-01-02'
问题是DateValue()
删除了时间部分。
同样的,
DateValue(CreatedDate) > Effective_Date__c ,
需要修改。
最后,我们发现Salesforce公式中存在错误。
在Salesforce公式中,我们正在检查始终返回false
“ Effective_Date__c <> null
”。 在Salesforce中,最好使用IsBlank()
函数而不是IsNull()
。 因此,我们在Salesforce中更改了CalculatedFormula以更正此问题。 新公式将为IsBlank(Effective_Date__c)
。
我不是Salesforce开发人员,因此无法提早发现此错误。 与Salesforce开发人员讨论此问题后,我们便可以找到系统中存在的该错误(从去年开始)。
我发现在Salesforce工作台中无法测试/调试此Calculated字段公式,这非常令人沮丧。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.