【问题标题】:Calculating Year-over-Year Change using ISO Year and ISO Week in power BI在 power BI 中使用 ISO 年和 ISO 周计算同比变化
【发布时间】:2021-06-15 08:12:12
【问题描述】:

我的后端表包含一周级别的数据。它包含当前 ISO 年份和当前 ISO 周,以及应与当年数据进行比较的上一年的 ISO 年和周数。

对于每个 signup_iso_year-signup_iso_week 组合,只存在一个 iso_prev_year-iso_prev_yearweek 组合。 iso_prev_year、iso_prev_yearweek 列说明了由于某些年份有 53 周而不是 52 周而可能发生的偏移量。

data table

(我无法嵌入图片,所以我也在这里添加了一个表格,虽然它的信息比“数据表”中的图像少得多)。

Number_of_signups signup_iso_year signup_iso_week iso_prev_year iso_prev_yearweek Country grade_level
5 2020 18 2019 18 IN middle school
7 2020 18 2019 18 US high school
6 2021 17 2018 18 IN middle school
8 2021 17 2018 18 US high school

我想使用 signup_iso_year、signup_iso_week、iso_prev_year、iso_prev_yearweek 列计算 number_of_signups 的 Year-Over_Year 变化。

我已经尝试创建一个计算列,其中包含上一年的 number_of_signups 的总和,但是由于上一年度或本年度可能不存在 country、grade_level、subject、email_type 的每个组合,一些值会丢失并因此给出不正确的结果。

我正在寻找的答案是 Power BI 度量,它可以根据 signup_iso_year 和 signup_iso_week 为我提供 YOY 变化。

编辑:我之前应该提过这个,但我忘了。该表包含 2018 年至今的数据。因此,数据量非常大。此外,我需要这个 YoY 度量来获得时间序列视觉效果,这意味着我无法使用简单的 MAX/MIN 函数为上一年分配 ISOyear/ISOweek 值。它需要从 iso_prev_year、iso_prev_yearweek 列中选择值,但由于 EARLIER 函数不能用于度量,我无法弄清楚如何做到这一点。

这就是为什么我试图创建一个计算列,并使用 EARLIER 函数来计算前一年的 number_of_signups。但由于数据中存在其他列,即国家、等级_级别、主题、电子邮件类型,实际 number_of_signups 和计算出的 previous_year_number_of_signups 存在差异。这些差异是由于并非这些列的每个组合每周都存在,因此我们在计算 previous_year_number_of_signups 时可能会遗漏一些数据。

编辑 2:被要求包含预期结果的示例,因此添加了一些图片。

YoY at overall level, country level, grade level

YOY at country+grade level

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    如果我理解您的要求正确,您需要如下所示的措施。请记住,这可能不是您真正需要的,但这肯定会帮助您达到所需的输出。

    prev_signup = 
    
    var iso_prev_year = MIN(your_table_name[iso_prev_year])
    var iso_prev_year_week = MIN(your_table_name[iso_prev_yearweek])
    
    RETURN
    CALCULATE(
        SUM(your_table_name[Number_of_signups]),
        FILTER(
            ALL(your_table_name),
            your_table_name[signup_iso_year] = iso_prev_year
                && your_table_name[signup_iso_week] = iso_prev_year_week
        )
    ) + 0
    

    您还可以在 Power Query 编辑器 中进行一些转换,并使用您的 Key 列连接同一个表。这种情况下,您可以将上一年的值放在同一行中。剩下的只是比较表中的 2 列来计算 YOY

    【讨论】:

    • 我之前应该提到过这一点,但我需要这个 YoY 度量来获得时间序列的视觉效果。这就是为什么,我不能使用像 MAX 或 MIN 这样的函数来分配前一年的值。另外,关于创建连接表,我担心这可能会使数据膨胀到太大并显着减慢我的报告速度。
    • 显示此示例输入数据的预期输出。
    • 我在最后附上了两张图片,可以让您对预期的输出有所了解。因为,我希望使用度量来计算 YoY,所以它应该能够为我拥有的每个维度列提供结果。
    猜你喜欢
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    相关资源
    最近更新 更多