需要帮助将继承的excel公式转换为SQL或DAX

时间:2017-06-02 15:19:14

标签: sql excel ms-access excel-formula dax

我很难绕过这个继承公式中的逻辑来计算ASCVD风险。在PowerBI中操作数据之前,在SQL数据库中处理数据(使用模糊逻辑来匹配记录),因此如果有一个首选的位置来处理它,我可以使用任何一个。

=IF(
OR(
(AGE)<40, 
(AGE)>79, 
(TCRow)<130, 
(TCRow)>320, 
(HDLRow)<20, 
(HDLRow)>100, 
(BPSystolicRow)<90, 
(BPSystolicRow)>200, 
AND((DiabetesRow)="", 
(DiabetesRowNo)=""), 
AND((ONBPMEDICATIONROW)="", 
(OFFBPMEDICATIONROW)=""), 
AND((SmokerRow)="", 
(SmokingRowNo)="")), "", 
IFERROR(IF((GenderFemaleRow)=1, 1-0.9665^(EXP
(((SUM(LN((AGE))*-29.799, 
LN((AGE))^2*4.884, 
LN((TCRow))*13.54, 
LN((AGE))*LN((TCRow))*-3.114, 
LN((HDLRow))*-13.578, 
LN(D3)*LN((HDLRow))*3.149, 
IF((ONBPMEDICATIONROW)=1, 
ROUND(LN((BPSystolicRow))*2.019, 2), 
LN((BPSystolicRow))*1.957), 
IF((SmokerRow)=1, 7.574, 0), 
ROUND(LN((AGE))*IF((SmokerRow)=1, -1.665, 0), 3), 
IF((DiabetesRow)=1, 0.661, 0)))-(-29.18)))), 1-0.9144^(EXP((SUM(LN((AGE))*12.344, 
LN((TCRow))*11.853, 
LN((AGE))*LN((TCRow))*-2.664, 
LN((HDLRow))*-7.99, 
LN((AGE))*LN((HDLRow))*1.769, 
IF((ONBPMEDICATIONROW)=1, 
LN((BPSystolicRow))*1.797, 
LN((BPSystolicRow))*1.764), 
IF((SmokerRow)=1, 7.837, 0), 
IF((SmokerRow)=1, 
LN((AGE))*-1.795, 0), 
IF((DiabetesRow)=1, 0.658, 0))-(61.18))))), ""))

1 个答案:

答案 0 :(得分:2)

我有机会参加。简而言之,公式说:

=IF(ParametersOutOfRangeOrMissing,"",CalculateRisk)

因此,如果某些数据超出范围或丢失,请返回&#34;&#34;否则计算风险。

ParametersOutOfRangeOrMissing是一项检查,以确保所有必要的数据都可用,并且数据在风险计算有效的范围内。这是一个很大的OR声明,如果存在多种情况中的任何一种情况(太年轻,太老,收缩压过高或太低等),这种风险计算都不适用。 )。这部分公式是:

OR(
    (AGE)<40, (AGE)>79, 
    (TCRow)<130, (TCRow)>320, 
    (HDLRow)<20, (HDLRow)>100, 
    (BPSystolicRow)<90, (BPSystolicRow)>200, 
    AND(
        (DiabetesRow)="", (DiabetesRowNo)=""
    ), 
    AND(
         (ONBPMEDICATIONROW)="", (OFFBPMEDICATIONROW)=""
    ), 
    AND(
        (SmokerRow)="", (SmokingRowNo)="")
)

公式的CalculateRisk部分是:

CalculateRisk = IFERROR(AttemptRiskCalculation,"")

所以回归&#34;&#34;如果在计算过程中发生任何错误,否则返回计算的风险。

AttemptRiskCalculation是基于性别的:

IF((GenderFemaleRow)=1,FemaleRisk,MaleRisk)

我假设(GenderFemaleRow)=1表示女性,但可能是男性。

女性和男性风险的公式相似,但不相同。这是女性面临的风险:

FemaleRisk=1-0.9665^(EXP(((SUM(
                               LN((AGE))*-29.799, 
                               LN((AGE))^2*4.884, 
                               LN((TCRow))*13.54, 
                               LN((AGE))*LN((TCRow))*-3.114, 
                               LN((HDLRow))*-13.578, 
                               LN(D3)*LN((HDLRow))*3.149, 
                               IF(
                                  (ONBPMEDICATIONROW)=1, 
                                  ROUND(LN((BPSystolicRow))*2.019, 2), 
                                  LN((BPSystolicRow))*1.957
                               ), 
                               IF((SmokerRow)=1, 7.574, 0), 
                               ROUND(LN((AGE))*IF((SmokerRow)=1, -1.665, 0), 3), 
                               IF((DiabetesRow)=1, 0.661, 0)
                           ))-(-29.18)))) 

男性:

MaleRisk=1-0.9144^(EXP((SUM(
                            LN((AGE))*12.344, 
                            LN((TCRow))*11.853, 
                            LN((AGE))*LN((TCRow))*-2.664, 
                            LN((HDLRow))*-7.99, 
                            LN((AGE))*LN((HDLRow))*1.769, 
                            IF(
                               (ONBPMEDICATIONROW)=1, 
                               LN((BPSystolicRow))*1.797, 
                               LN((BPSystolicRow))*1.764
                            ), 
                            IF((SmokerRow)=1, 7.837, 0), 
                            IF((SmokerRow)=1, LN((AGE))*-1.795, 0), 
                            IF((DiabetesRow)=1, 0.658, 0)
                        )-(61.18))))

希望有所帮助