我尝试用DAX编写下面的SQL代码。
select SUM(amount) from TABLE
where BusinessDate = '2023-02-11'
OR (Segment = 'General' and Days_Without_Payments < 210)
OR (Segment = 'Enterprise' and Days_Without_Payments < 1215)
OR (Segment = 'House' and Days_Without_Payments < 1945)
我得到了第一部分(即总和)的权利,但不能让我的头周围的过滤器。
- 我尝试过**
Measure = CALCULATE([Total Outstanding],
FILTER(VALUES(BILBL_WO[Date]),BILBL_WO[Date]=MAX(BILBL_WO[Date])),
AND(BILBL_WO[Days_Without_Payments] < 210, BILBL_WO[Segment] = "General") ||
AND(BILBL_WO[Days_Without_Payments] < 1215, BILBL_WO[Segment] = "Enterprise") ||
AND(BILBL_WO[Days_Without_Payments] < 1945, BILBL_WO[Segment] = "House")
)
其中Total Outstanding
是我为Amount
求和而创建的另一个度量。
请帮助,因为我找不到一些有用的东西从互联网上,我是新的在这一点上。谢谢!
1条答案
按热度按时间xxslljrj1#
一般来说,当人们开始学习DAX时,大多数人认为它像SQL查询,但事实并非如此,因为SQL是一种结构化查询语言,相比之下,DAX是一种用于分析目的的公式语言,类似于excel方程。
考虑到您有一个导入到Power BI或SSAS表格模型的表,我将简单地给予您一些关于如何将SQL转换为DAX的提示,如下所示:
您需要按如下方式隔离查询:
1.日期列的Where条件:我通常会创建一个日期维度,并与包含日期列的表建立一个关系。您可以从深入了解Power BI和星星型架构中评估上下文的更多细节开始,但在您的情况下,如果列数据类型是字符串,则将其转换为日期类型,然后将日期列用作Power BI报告页面中的过滤器。允许报告用户选择不同的日期,而不仅仅是“2023-02- 11”。
1.对于您在Segment和Days_Without_Payments上的条件,在将其转换为DAX之前,我认为您的原始查询缺少括号。如果我理解正确,请告诉我是否有错误。
Altered SQL script
1.如果我的上述假设是正确的,并且您需要编写一个具有Segment和Days_Without_Payments条件的DAX度量,则可以将其编写如下:
关于如何使用多列过滤DAX的更多信息,请观看YouTube视频https://www.youtube.com/watch?v=kQjYG6TJVp8并关注SQLBI频道,它会对您有很大帮助。
我希望我在某种程度上有所帮助;如果有,请将此标记为答案:)