SQL Server 如何在DAX中编写SQL?

xtfmy6hx  于 2023-02-15  发布在  其他
关注(0)|答案(1)|浏览(205)

我尝试用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求和而创建的另一个度量。
请帮助,因为我找不到一些有用的东西从互联网上,我是新的在这一点上。谢谢!

xxslljrj

xxslljrj1#

一般来说,当人们开始学习DAX时,大多数人认为它像SQL查询,但事实并非如此,因为SQL是一种结构化查询语言,相比之下,DAX是一种用于分析目的的公式语言,类似于excel方程。
考虑到您有一个导入到Power BI或SSAS表格模型的表,我将简单地给予您一些关于如何将SQL转换为DAX的提示,如下所示:
您需要按如下方式隔离查询:

  1. SQL查询中示例SUM(amount)中的聚合函数将以DAX表示:未付总额=总和('BILBL_WO'[金额])
    1.日期列的Where条件:我通常会创建一个日期维度,并与包含日期列的表建立一个关系。您可以从深入了解Power BI和星星型架构中评估上下文的更多细节开始,但在您的情况下,如果列数据类型是字符串,则将其转换为日期类型,然后将日期列用作Power BI报告页面中的过滤器。允许报告用户选择不同的日期,而不仅仅是“2023-02- 11”。
    1.对于您在Segment和Days_Without_Payments上的条件,在将其转换为DAX之前,我认为您的原始查询缺少括号。如果我理解正确,请告诉我是否有错误。
select SUM(amount) 
from TABLE
where BusinessDate = '2023-02-11'
and
(
(Segment = 'General' and Days_Without_Payments < 210) 
OR
(Segment = 'Enterprise' and Days_Without_Payments < 1215)
OR 
(Segment = 'House' and Days_Without_Payments < 1945)
)

Altered SQL script
1.如果我的上述假设是正确的,并且您需要编写一个具有Segment和Days_Without_Payments条件的DAX度量,则可以将其编写如下:

Measure = CALCULATE([Total Outstanding] ,
    KEEPFILTERS(
    FILTER(
    ALL(BILBL_WO[Segment] ,BILBL_WO[Days_Without_Payments]),
    (BILBL_WO[Segment] = "General" && BILBL_WO[Days_Without_Payments] < 210) 
    ||
    (BILBL_WO[Segment] = "Enterprise" && BILBL_WO[Days_Without_Payments] < 1215)
    || 
    (BILBL_WO[Segment] = "House" && BILBL_WO[Days_Without_Payments] < 1945))
    )
    )

关于如何使用多列过滤DAX的更多信息,请观看YouTube视频https://www.youtube.com/watch?v=kQjYG6TJVp8并关注SQLBI频道,它会对您有很大帮助。
我希望我在某种程度上有所帮助;如果有,请将此标记为答案:)

相关问题