如何使用 DAX 在 Power BI 中计算赚取的保费?

问题描述 投票:0回答:2

使用 Power BI 计算已赚取保费。

您好,我对 Power BI 还很陌生,我对使用 Power bi 为我的项目计算已获保费感到非常困惑。我尝试过在线查找解决方案,但由于某种原因,它们对我不起作用。

背景: 保险公司的保费收入计算如下: 赚取保费 = 支付金额 * 当期天数 / 总承保天数 例如,如果您支付 100 美元购买 1 年保险,那么在 3 月份您将赚取 8.49 美元:

赚取的保费 = 100 美元 * 31(三月天数)/ 365(购买保险的天数)。

问题: 我将我的保费细分为每天的保费,并希望我可以将其乘以涵盖期间的日期数量。

Earned prmeium = 
CALCULATE(
   SUM( 'pre_staging scheduled_item_coverage'[Premium per day]
    *
        COUNTROWS(
            DATESBETWEEN(
            Calender[Date],
            IF(
                FIRSTDATE(Calender[Date])>=MIN('pre_staging scheduled_item_coverage'[Premium start date]),
                FIRSTDATE(Calender[Date]),MIN('pre_staging scheduled_item_coverage'[Premium start date])
            ),
            IF(
                LASTDATE(Calender[Date])<=MAX('pre_staging scheduled_item_coverage'[Expiring date]),
                LASTDATE(Calender[Date]),MAX('pre_staging referral_types'[expiry_date])
            )
            )
        )

到目前为止,我不知道我的代码哪里出了问题。

我希望有经验的人能够指导我正确的方法。

谢谢!

汤姆。

powerbi dax powerbi-desktop
2个回答
0
投票
Earned prmeium = 

SUMX(
   'Calendar',
    SUMX('pre_staging scheduled_item_coverage',
        IF( 
            AND(
                'pre_staging scheduled_item_coverage'[Premium start date] <= 'Calendar'[Date],
                'pre_staging scheduled_item_coverage'[Expiring Date] > 'Calendar'[Date]
            ),
            'pre_staging scheduled_item_coverage'[Premium per day], BLANK()
        )
    )
)

这会迭代每天的每项政策。如果该日在保单期限内,请添加每天的保费。


0
投票

您的计算似乎取得了良好进展,但 DAX 表达式中需要进行一些调整。

  1. 天数计算:您使用

    DATESBETWEEN
    函数来计算承保期内的天数看起来是正确的。

  2. 乘以每天的保费:将每天的保费乘以天数似乎也很正确。

但是,需要进行一些调整:

  • 删除 COUNTROWS() 周围的 SUM():由于您已经在计算行数,因此不需要额外的 SUM() 函数。直接计算行数就足够了。

  • 确保正确的表格引用:您似乎引用了错误的表格(

    pre_staging referral_types
    )而不是
    pre_staging scheduled_item_coverage
    。确保表格引用的一致性。

这是经过这些调整后的 DAX 表达式的改进版本:

Earned Premium = 
    CALCULATE(
        SUM('pre_staging scheduled_item_coverage'[Premium per day]) *
        COUNTROWS(
            DATESBETWEEN(
                Calender[Date],
                IF(
                    FIRSTDATE(Calender[Date]) >= MIN('pre_staging scheduled_item_coverage'[Premium start date]),
                    FIRSTDATE(Calender[Date]),
                    MIN('pre_staging scheduled_item_coverage'[Premium start date])
                ),
                IF(
                    LASTDATE(Calender[Date]) <= MAX('pre_staging scheduled_item_coverage'[Expiring date]),
                    LASTDATE(Calender[Date]),
                    MAX('pre_staging scheduled_item_coverage'[Expiring date])
                )
            )
        )
    )

确保将

pre_staging scheduled_item_coverage
替换为正确的表名称。另外,请确保日期列(
Premium start date
Expiring date
)在 Power BI 中格式正确为日期。


这对你来说怎么样?

© www.soinside.com 2019 - 2024. All rights reserved.