Dax 不同值的非共振和
我在SSAS中有一个表格,包含带有库存日期、SKU和其他属性的库存Dax 不同值的非共振和,dax,ssas-tabular,Dax,Ssas Tabular,我在SSAS中有一个表格,包含带有库存日期、SKU和其他属性的库存 +----------+-----+ | Date | SKU | +----------+-----+ | 20180701 | 1 | +----------+-----+ | 20180701 | 2 | +----------+-----+ | 20180701 | 3 | +----------+-----+ | 20180702 | 1 | +----------+-----+ | 20180
+----------+-----+
| Date | SKU |
+----------+-----+
| 20180701 | 1 |
+----------+-----+
| 20180701 | 2 |
+----------+-----+
| 20180701 | 3 |
+----------+-----+
| 20180702 | 1 |
+----------+-----+
| 20180702 | 3 |
+----------+-----+
| 20180703 | 3 |
+----------+-----+
每天,我想通过计算不同的sku值来聚合数据:
CntSKU:= DISTINCTCOUNT([SKU])
但是,每个月,我希望将每日值相加,然后除以天数(如天数的平均值)。DAX似乎没有那么难:
AvgSKU:= DIVIDE(
sumx(SUMMARIZE(Table;Table[Date];"CntSKU";DISTINCTCOUNT(Table[SKU]));[CntSKU])
;DISTINCTCOUNT(Table[Date])
;BLANK()
)
不过,演出相当糟糕。
一个月内,CntSKU每天的查询时间约为7.2秒。AvgSKU测量值的计算大约需要9.5秒。对于Excel Pivot中的几个或几个计算中的较大数据集,此计算时间是一个更致命的杠杆
接下来的问题是:有没有更好的方法来计算AvgSKU度量?也许我误解了你的目标,但你的Dax公式似乎过于复杂了。我会尝试以下措施:
SKU Count = DISTINCTCOUNT(Table[SKU])
Date Count = DISTINCTCOUNT(Table[Date])
SKU Count per Date = DIVIDE( [SKU Count], [Date Count])
是的,在进一步研究之后,我同意我的DAX很愚蠢或者只是“过于复杂”:-) 我没有考虑到语境转换的力量 我修改过的DAX工作起来很有魅力
Averagex(Datum, CALCULATE(Distinctcount(SKUid))
就是这样。我需要将每天的不同值相加,然后除以天数,得到每月的平均值。在我的例子中:(3+2+1)/3=2(而不是3/3=1)。我不明白的是,为什么在总体水平上,将30个不同的值相加并除以30需要2,5秒。要明确的是,你说的只是基本的
DISTINCTCOUNT(表[SKU])
计算需要7秒以上?您的数据表有多少行?比如1亿行?基本的不同计数大约需要1.5秒,但按日期分组大约需要7秒。我的示例数据由1.3亿行组成。才一个月。整个TM表包含2年的时间,大小约为25GB。我猜您只是看到了在大型数据集上进行计算的效果。你可以上游的任何聚合或它是否必须与DAX动态完成?可能。我只是不明白(现在)为什么不同的计数器本身比不同的天数除以天数快两秒。。。我认为可能有一种方法可以调整DAX语句以获得更高的性能。