sql - DAX 从开始和结束日期获取时间序列
问题描述
我有一系列具有开始和结束日期的事件,具有值和一系列其他属性。
Country --- Location --- Start-Date --- End-Date --- Value per day
Italy Rome 2018-01-01 2018-03-15 50
Belgium BXL 2017-12-04 2017-12-6 120
Italy Milan 2018-03-17 2018-04-12 80
我想在 DAX 中将其转换为每月时间序列,例如:
Country --- Location --- Month --- Value per day
Italy Rome 2018-01 50
Italy Rome 2018-02 50
Italy Rome 2018-03 22.58 (= 50 /31*(31-17) days)
该值是工业产能的加权平均值。我已经通过日历表的 CROSS JOIN 完成了此操作,但这非常繁重,需要计算每个可能的值,而即时计算可能会更快。
有什么帮助吗?非常感谢
解决方案
DAX 将类似于:
Total =
Var DayDiff =
SUMMARIZE(Table1,Appointments[End-Date],
"DayDiff",DATEDIFF(min(Table1[Start-Date]),MAX(Table1[End-Date]),DAY)
)
RETURN
sumx(DayDiff,[DayDiff])
您不必在过滤器中使用国家、位置和月份(在上面的 dax 中),因为它们将在您使用的过滤器上下文中可用(例如数据透视表)。
如果这不起作用,请粘贴示例行。
推荐阅读
- java - 如何打印LIMIT和OFFSET的SQL参数
- css - 样式不适用于反应引导导航栏
- android - UnityAds isReady() 总是返回 false
- python - 如何标记波斯字符串并将其保存到 txt 文件中
- hyperledger-fabric - 错误:[Channel.js]:频道:我的频道收到发现错误:访问被拒绝
- amazon-web-services - AWS CodeBuild 可以输出解压缩的工件吗?
- google-apps-script - 在不同单元格中找到数字时删除重复行
- node.js - 我尝试在我的 Mac 中安装节点,但我有问题
- java - Android Studio 3.4 多个dex文件定义
- dart - SocketException: Connection failed (OS Error: No route to host, errno = 65), address = xxxx, port = 80