我有一个包含订单头寸和相应订单号的事实表。它有大约250 mio行。
我的目标是创建一个可用于回答以下问题的衡量标准:包含产品xyz的所有订单的总收入是多少。
我添加了一个表,其中包含名为Orderfilter的所有不同商品编号,只有一列OrderFilter [ArticleNr]。该表用于过滤订单表。该表与订单表无关。
根据此设置,我创建了以下度量。
Orderfilter Sum sales:=SUMX(
CALCULATETABLE (
Orders;
FILTER (
Orders;
CONTAINS (
CALCULATETABLE (
VALUES(Orders[OrderNr]);
FILTER (
Orders;
CONTAINS (
VALUES ( Orderfilter[ArticleNr] );
Orderfilter[ArticleNr];
Orders[ArticleNr]
)
)
);
Orders[OrderNr];
Orders[OrderNr]
)
)
);
Orders[Salesamount]
)
这个计算本身似乎有效,但速度很慢。当我尝试在Excel中使用它时将层次结构放入行中时会超时。
是否有可能调整此查询?
此致 Henning Lange
更新:所需的结果表(真的不知道如何在这里添加表格......)
订单表。如果我过滤ArticleNr = 2,我想保留"< - Keep" -rows。
|OrderNr |ArticleNr |
|1 |1 | <- Keep
|1 |***2*** | <- Keep
|2 |1 |
|2 |3 |
|3 |***2*** | <- Keep
答案 0 :(得分:0)
只有选择一个ArticleNr
时,此方法才有效。由于我使用MAX()
函数来确定过滤器中所选值的内容,因此它将始终返回最大值ArticleNr
。
考虑这个样本数据:
订单表
OrderNr ArticleNr Revenue
1 1 100
1 2 200
2 1 50
2 3 70
3 2 300
3 4 200
4 1 50
<强>文章强>
ArticleNr
1
2
3
创建一个度量来确定行:
Rows :=
SUMX ( FILTER ( Orders, [ArticleNr] = MAX ( Articles[ArticleNr] ) ), 1 )
现在使用Rows
指标,您可以获得Sum Sales
:
Sum Sales :=
SUMX (
FILTER ( Orders, SUMX ( ALLEXCEPT ( Orders, Orders[OrderNr] ), [Rows] ) = 1 ),
[Revenue]
)
这是Power Pivot中的数据透视表。
如果有帮助,请告诉我。
答案 1 :(得分:0)
如果在Excel中使用层次结构时速度很慢,那么层次结构就是问题所在。可能是不自然的。无论使用何种引擎(表格/多维),Excel都会向MDAS发送MDX查询。当谈到不自然的等级时,事情就出错了。
尝试建立自然层次结构并进行检查。 以日期昏暗为例。 你有日期,月份,年份。如果您只是将1月 - 12月放入月份列,它就不会是唯一的。尝试明确指定hierarhy成员。就像在这种情况下一样,将年份列入月份列,例如2016年1月,等等。因此,每个月都将是唯一的,并且当您进行下钻时,引擎将不会选择哪个成员。