首页 文章

不同值的不一致总和

提问于
浏览
1

我在SSAS中有一个表格,其中包含股票日期,SKU和其他属性 .

+----------+-----+
| Date     | SKU |
+----------+-----+
| 20180701 | 1   |
+----------+-----+
| 20180701 | 2   |
+----------+-----+
| 20180701 | 3   |
+----------+-----+
| 20180702 | 1   |
+----------+-----+
| 20180702 | 3   |
+----------+-----+
| 20180703 | 3   |
+----------+-----+

每天我想通过计算不同的sku值来聚合数据:

CntSKU:= DISTINCTCOUNT([SKU])

但是,每个月我想总结每日 Value 并将它们除以天数(比如几天的平均值) . DAX似乎并不那么困难:

AvgSKU:= DIVIDE(
            sumx(SUMMARIZE(Table;Table[Date];"CntSKU";DISTINCTCOUNT(Table[SKU]));[CntSKU])
            ;DISTINCTCOUNT(Table[Date])
            ;BLANK()
            )

但是表现非常糟糕 . 一个月,每天CntSKU的查询时间约为7.2秒 . AvgSKU测量大约需要9.5秒来计算 . 对于一对中的更大数据集或Excel中的几个计算,旋转这个计算时间是一个更致命的杠杆 .

enter image description here

随后的问题是:有更好的方法来计算AvgSKU - 测量吗?

2 回答

  • 1

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

    SKU Count = DISTINCTCOUNT(Table[SKU])
    
    Date Count = DISTINCTCOUNT(Table[Date])
    
    SKU Count per Date = DIVIDE( [SKU Count], [Date Count])
    
  • 0

    是的,在研究了一些之后我同意我的DAX是愚蠢的或者只是“过于复杂”:-)我没有考虑到上下文转换的力量 .

    我修改后的DAX就像一个魅力 .

    Averagex(Datum, CALCULATE(Distinctcount(SKUid))
    

    就是这样 .

相关问题