powerbi - 在 power BI 中使用 ISO 年和 ISO 周计算同比变化
问题描述
我的后端表有一周级别的数据。它包含当前 ISO 年份和当前 ISO 周,以及应与当年数据进行比较的上一年的 ISO 年和周数。
对于每个 signup_iso_year-signup_iso_week 组合,只存在一个 iso_prev_year-iso_prev_yearweek 组合。iso_prev_year、iso_prev_yearweek 列说明了由于某些年份有 53 周而不是 52 周而可能发生的偏移。
(我无法嵌入图像,所以我也在这里添加了一个表格,尽管它的信息比“数据表”中的图像少得多)。
Number_of_signups | signup_iso_year | 注册iso_week | iso_prev_year | iso_prev_yearweek | 国家 | Grade_level |
---|---|---|---|---|---|---|
5 | 2020 | 18 | 2019 | 18 | 在 | 中学 |
7 | 2020 | 18 | 2019 | 18 | 我们 | 中学 |
6 | 2021 | 17 | 2018 | 18 | 在 | 中学 |
8 | 2021 | 17 | 2018 | 18 | 我们 | 中学 |
我想使用 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:被要求包含预期结果的示例,因此添加了一些图片。
解决方案
如果我理解你的要求是正确的,你需要一个像下面这样的措施。请记住,这可能不是您需要的确切内容,但这肯定会帮助您达到所需的输出。
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 编辑器中进行一些转换,并使用您的键列连接同一个表。这种情况下,您可以将上一年的值放在同一行中。休息只是比较表中的 2 列来计算 YOY
推荐阅读
- vim - 重新分配字符串字符
- android - 显示发布证书指纹仅显示 (SHA-256),不显示 SHA1
- html - 如何在网站/WordPress 中“控制背景元素”?
- sql - 在Oracle中如何清除缺少括号的错误?
- apache-spark - 使用 Livy 作为 OS 用户运行 spark 程序
- python - 如何使用 matplotlib 将每个图形保存在循环中
- r - 如何自定义线图的 24 小时开始时间和结束时间?(例如,从 7:30 开始)
- javascript - 在连接到同一个 Rooter 的 2 个不同程序之间发送/接收数据(没有互联网)(JavaScript 和 Electron)
- c# - 无法将音频文件发送到浏览器进行流式传输;只收到几个字节(内容大小:0)
- c - 我怎样才能为我欠找的最低硬币修复“非无效功能的结束”?