不同值的无效总和

Imperformant sum of distinct values

我在 SSAS 中有一个表格 table,其中包含带有库存日期、SKU 和其他属性的库存。

+----------+-----+
| 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-Measure有没有更好的计算方法?

也许我误解了你的目标,但你的 Dax 公式似乎过于复杂了。我会尝试这些措施:

SKU Count = DISTINCTCOUNT(Table[SKU])

Date Count = DISTINCTCOUNT(Table[Date])

SKU Count per Date = DIVIDE( [SKU Count], [Date Count])

是的,在进一步研究之后,我同意我的 DAX 很愚蠢或者只是 "over - complicated" :-) 我没有考虑上下文转换的力量。

我修改后的 DAX 非常有效。

Averagex(Datum, CALCULATE(Distinctcount(SKUid))

就是这样。