【发布时间】:2020-08-09 09:15:55
【问题描述】:
我必须显示前一天的销售以及当前的销售。问题是没有前一天销售的那一天,该行被跳过。我正在使用以下 DAX 函数:
SumInRange =
var sel = selectedvalue('Table'[Date])
return
CALCULATE(SUMX(DISTINCT('Table'[Date]),CALCULATE(MAX('Table'[Sale]))),FILTER(all('Table'),'Table'[Date] = sel -1))
要复制场景,第一步是使用 - >
创建 Dim Date 表Dim Date = GENERATESERIES(date(2019,01,01),date(2019,12,31),1)
第二步是创建DataTable ->
Table = DATATABLE("Date",DATETIME,"Flag1",STRING,"Flag2",STRING,"Sale",INTEGER,{
{"8/1/2019","True","True",200},
{"8/2/2019","False","True",80},
{"8/2/2019","False","True",80},
{"8/2/2019","False","True",80},
{"8/2/2019","False","True",80},
{"8/2/2019","False","True",80},
{"9/3/2019","False","True",60},
{"9/4/2019","False","True",10},
{"9/5/2019","False","True",100},
{"9/6/2019","False","True",30},
{"9/7/2019","False","True",60},
{"9/8/2019","False","False",150},
{"9/9/2019","False","False",80},
{"9/10/2019","False","False",90},
{"9/11/2019","False","False",30},
{"9/12/2019","False","False",20},
{"10/13/2019","False","True",50},
{"10/14/2019","False","True",60},
{"10/15/2019",BLANK(),BLANK(),BLANK()},
{"10/16/2019",BLANK(),BLANK(),BLANK()}
})
第三步 - 在日期列上创建这些表之间的关系
第 4 步 - 创建 Measure 使用 -
SumInRange =
var sel = selectedvalue('Table'[Date])
return
CALCULATE(SUMX(DISTINCT('Table'[Date]),CALCULATE(MAX('Table'[Sale]))),FILTER(all('Table'),'Table'[Date] = sel -1))
此输出作为屏幕截图附加。您会观察到没有前一天销售的日期被省略,例如 - 08/01/2019。此日期的行被跳过,因为它没有前一天的销售?如何让跳过的行再次返回上一个日期的 0 销售?
【问题讨论】:
-
创建一个合适的日历表并使用它的日期,而不是事务表中的日期
-
@RADO :这是我创建的一个快速示例。我的实际日历是从 2005 年到 2020 年,并且有更多的列。我的目的是了解 Power BI 的行为。为什么它会跳过数据不可用的行以及如何克服这个问题。我尝试使用 IF(contains(Table,Table[sale] ,selectedvalue(table[sale]) = blank(),0,1)。这也不起作用