不同值的无效总和
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))
就是这样。
我在 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))
就是这样。