Ssas 基于运行总数的子样本分析
我是DAX的新手,我有一个我不知道如何解决的问题。我用一个人工的例子来简化它。我处于SSAS表格模型的环境中 假设我有一个“zirkbols”(发明)工厂和一个代表zirkbols销售额的表格。每位顾客购买了不同数量的zirkbols,评分为1至5。 该表如下所示: 使用此代码生成它:Ssas 基于运行总数的子样本分析,ssas,dax,Ssas,Dax,我是DAX的新手,我有一个我不知道如何解决的问题。我用一个人工的例子来简化它。我处于SSAS表格模型的环境中 假设我有一个“zirkbols”(发明)工厂和一个代表zirkbols销售额的表格。每位顾客购买了不同数量的zirkbols,评分为1至5。 该表如下所示: 使用此代码生成它: = DATATABLE( "ClientId"; INTEGER; "CountryCode"; STRING; "OrderDate"; DATETIME; "OrderAm
= DATATABLE(
"ClientId"; INTEGER;
"CountryCode"; STRING;
"OrderDate"; DATETIME;
"OrderAmount"; DOUBLE;
"Rating"; INTEGER;
{
{123; "US"; "2018-01-01"; 502; 1};
{124; "US"; "2018-01-01"; 400; 4};
{125; "US"; "2018-01-03"; 60; 5};
{126; "US"; "2018-01-02"; 160; 4};
{124; "US"; "2018-01-05"; 210; 3};
{128; "JP"; "2018-01-03"; 22; 5};
{129; "JP"; "2018-01-07"; 540; 2};
{130; "JP"; "2018-01-03"; 350; 4};
{131; "JP"; "2018-01-09"; 405; 4};
{132; "JP"; "2018-01-09"; 85; 5}
}
)
我需要创建一些指标,为购买我30%销售额的客户样本提供统计数据,这些客户是最满意的客户之一。这意味着我需要按“评级”进行排名,并将“订单金额”相加,直到我得到至少30%的总金额。这个样本是我快乐的zirkbols车主。例如,对于这些快乐的zirkbols车主,我想知道他们的平均评级
我认为,如果我能将订单金额的总金额放在计算列中,这可能会更容易,但我想让分析师有可能只过滤“美国”销售额,我不知道在计算列中是否可行。
另一方面,我假设按评级的排名可以存储在计算列中(ranking=RANK.EQ([rating];ClientOrders[rating])
我预期会有以下结果:
正如我所说,我是SSAS和DAX的新手,所以我不知道我是否从错误的角度看待这个问题
问候,,
尼古拉
p.S.请同时查看对已接受答案的评论我有一些DAX基本正常工作,但我需要回到它 同时,这里有一些代码:
Happy owners amount =
VAR Summary =
SUMMARIZE (
Orders,
Orders[CountryCode],
Orders[ClientId],
Orders[Rating],
"Amount", SUM ( Orders[OrderAmount] )
)
VAR Ranked =
ADDCOLUMNS ( Summary, "Rank", RANKX ( Summary, Orders[Rating] + 1 / [Amount] ) )
VAR Cumulative =
ADDCOLUMNS (
Ranked,
"CumAmt", CALCULATE (
SUM ( Orders[OrderAmount] ),
FILTER ( Ranked, [Rank] <= EARLIER ( [Rank] ) )
)
)
VAR CutOff =
MINX (
FILTER (
Cumulative,
[CumAmt]
> 0.3 * CALCULATE ( SUM ( Orders[OrderAmount] ), ALLSELECTED ( Orders ) )
),
[Rank]
)
RETURN
SUMX ( FILTER ( Cumulative, [Rank] <= CutOff ), [Amount] )
快乐的主人=
风险值摘要=
总结(
命令,
订单[国家代码],
订单[客户ID],
订单[评级],
“金额”,总和(订单[订单金额])
)
VAR排名=
添加列(汇总,“排名”,RANKX(汇总,订单[评级]+1/[金额])
累积风险值=
添加列(
排列,
“累计金额”,计算(
总额(订单[订单金额]),
过滤器(排名,[Rank]0.3*计算(总和(订单[OrderAmount]),所有选定(订单))
),
[排名]
)
返回
SUMX(过滤器(累积,[等级]对于JP,您选择了5级,然后客户选择了4级,金额较小。对于我们,您选择了较大的金额作为第二选择。除非您也想解决背包包装问题,否则您可能应该选择另一种方法。嗨,Alexis,谢谢您的回答。我看到提出的问题有其特殊性如果我将条件“至少30%”更改为“最多30%”,那么解决起来就容易多了。在我的实际案例中,因为我有一个更大的样本,所以跨越30%的边界情况实际上并不显著。我在最后得到的平均评级的衡量标准是:averageRating:=VAR cumSum=ADDCOLUMNS(ClientOrders;“CumVal”SUMX(FILTER)(ClientOrders;[Ranking])我将您的答案标记为我的解决方案,因为它解决了我遇到的主要问题:我不知道您可以在度量中使用表变量(VAR)。谢谢!