首页 > 解决方案 > SQL 到 DAX 的转换

问题描述

Power BI 新手,在 Dax 转换方面需要一些帮助。日期20191130正在通过另一个页面的切片器传递,所以我不确定如何设置我的 dax,以便阅读以下内容:

当前值

SELECT SUM(value) FROM Table
Where DateKey BETWEEN 20181201 AND 20191130

以前的值

SELECT SUM(value) FROM Table
Where DateKey BETWEEN 20171201 AND 20181130

(当前值 - 先前值)/(先前值)

标签: powerbidax

解决方案


假设 Slicer Date 是 Date 格式,您将不得不创建两个不同的计算:

当前值:

 Current Value =
            VAR End1 = Table[SlicerDate]
            VAR Start1 = DATE(YEAR(End1)-1,MONTH(End1),DAY(End1))+1
            VAR End2 = DATE(YEAR(End1)-1,MONTH(End1),DAY(End1))
            VAR Start2 = DATE(YEAR(End1)-2,MONTH(End1),DAY(End1))+1
    RETURN CALCULATE(COUNT('Table'[Name]),'Table'[Datekey]>=Start1 && 'Table'[Datekey]<=End1)

以前的值:

Previous Value =
        VAR End1 = Table[SlicerDate]
        VAR Start1 = DATE(YEAR(End1)-1,MONTH(End1),DAY(End1))+1
        VAR End2 = DATE(YEAR(End1)-1,MONTH(End1),DAY(End1))
        VAR Start2 = DATE(YEAR(End1)-2,MONTH(End1),DAY(End1))+1
RETURN CALCULATE(COUNT('Table'[Name]),'Table'[Datekey]>=Start1 && 'Table'[Datekey]<=End1)

如果您的切片器日期是数字或文本格式:

当前值:

Current Value =
        VAR End1 = Date(Left(Table[SlicerDate],4),Right(left(Table[SlicerDate],6),2),right(Table[SlicerDate],2)
        VAR Start1 = DATE(YEAR(End1)-1,MONTH(End1),DAY(End1))+1
        VAR End2 = DATE(YEAR(End1)-1,MONTH(End1),DAY(End1))
        VAR Start2 = DATE(YEAR(End1)-2,MONTH(End1),DAY(End1))+1
RETURN CALCULATE(COUNT('Table'[Name]),'Table'[Datekey]>=Start1 && 'Table'[Datekey]<=End1)

以前的值:

Previous Value =
        VAR End1 = Date(Left(Table[SlicerDate],4),Right(left(Table[SlicerDate],6),2),right(Table[SlicerDate],2)
        VAR Start1 = DATE(YEAR(End1)-1,MONTH(End1),DAY(End1))+1
        VAR End2 = DATE(YEAR(End1)-1,MONTH(End1),DAY(End1))
        VAR Start2 = DATE(YEAR(End1)-2,MONTH(End1),DAY(End1))+1
RETURN CALCULATE(COUNT('Table'[Name]),'Table'[Datekey]>=Start1 && 'Table'[Datekey]<=End1)

希望这可以帮助。


推荐阅读