
我已经创建了一个pareto分析,但问题是它不是动态的,因为它是在customers表的一个计算列中按另一个表中的销售总和的顺序完成的。
现在我的#runningtotal是
CALCULATE([M-CY_Sales];FILTER(ALLSELECTED(CUSTOMERS);
CUSTOMERS[DAX RANK]<=MAX(CUSTOMERS[DAX RANK]));CUSTOMERS[Customer Number] <>BLANK();
'Detail Sales Report'[Total Actual Revenue - Base]>0)其中我使用具有rankx CUSTOMERSDAX排名的计算列。我可以将此度量设置为动态吗?我想用var和addcoloumn建立一个表,但我做不到。我的实际问题是,我需要这个pareto动态,因为区域的过滤器不能使用静态列。
我试着写点东西,但我不知道怎样才能创造出我想要的东西
#RUNNINGTOTAL2 =
var customerranked=ADDCOLUMNS(ALLSELECTED(CUSTOMERS);"ranking";[M-DAX RANK])
return
CALCULATE([M-CY_Sales];FILTER(ALLSELECTED(CUSTOMERS);
customerranked<=MAX(customerranked));CUSTOMERS[Customer Number]<>BLANK();
'Detail Sales Report'[Total Actual Revenue - Base]>0)显然,这是不正确的。我希望你能理解我的问题。我需要在我的度量done total中引用一个使用rankx完成的虚拟列
使用measures编辑的示例数据:此处:https://mega.nz/#!4t1y0AJI!XF2Vcejm6C50nnssQCS1bJEhnqIGiH1d-mIltVskRgE
发布于 2019-11-19 20:12:55
虽然这里是PBIX file,它可能会像您预期的那样工作,但您应该拿起扫把,稍微扫一下您的模型。要使其正常工作,只需设置从区域到客户再到销售的关系。或者更好的是,去掉地区表。您在Customers表中具有该维度。我只是稍微改变了你的方法,让它正常工作,但我会完全改变它们。也许你不需要使用过滤功能。

#RUNNINGTOTAL =
CALCULATE (
SUM ( 'Sales'[Revenue] ),
FILTER (
ALLSELECTED ( Customers ),
Customers[DAX RANK]
<= MAX ( Customers[DAX RANK] )
),
'Sales'[Revenue] > 0
)无论如何,我会从头开始。你为什么有三张桌子?表区域的用途是什么。您可以使用地区表Customers来分割销售。
如果你真的不接受更正后的发票和负销售(问问自己为什么),建立一个这样的衡量标准:
[Sales] =
CALCULATE (
SUM ( FactTable[Sales] ),
FactTable[Sales] > 0
)然后在其他度量中引用它。查看这些帖子以了解过滤的差异:
DAX Calculate function with and without FILTER
Difference between CALCULATE(m, x=red) vs CALCULATE(m, KEEPFILTERS(x=red))
您可能会考虑在Customers和Sales之间构建一个桥接表,其中将包含这两个表的唯一CustomerID。字典更新时会出现滞后。
bridge =
DISTINCT (
UNION (
DISTINCT ( Sales[CustomerID] ),
DISTINCT ( Customers[CustomerID] )
)
)发布于 2019-11-19 01:04:23
这确实是可能的,并鼓励定义动态计算排名和累计总数的度量。
但是,也存在一些可视化问题。看起来不可能用“折线图和簇状柱状图”来测量x轴。因此,不可能对x轴使用Rank度量。您可以将客户编号放在x轴上,但是如果使用分类x轴,图表看起来会很糟糕。它不适合在屏幕上显示,需要很长的滚动条才能到达右端。实际上,这很难像帕累托图那样工作。
基于这个观察,我建议尽可能使用R/ Python visual。下面是一个使用R visual的示例。
library(dplyr)
library(ggplot2)
totalSales <- sum(dataset$SalesAmount)
dataset <- dataset %>%
arrange(desc(SalesAmount)) %>%
mutate(
CumulativeSales = cumsum(SalesAmount),
Rank = order(SalesAmount, decreasing = TRUE)
)
p <- ggplot(dataset, aes(x = Rank, y = SalesAmount)) +
geom_bar(stat = "identity", width = 1, fill = "#01b8aa")
ymax <- layer_scales(p)$y$range$range[2]
p <- p + geom_line(aes(y = CumulativeSales / totalSales * ymax),
size = 1, color = "#fd625e") +
scale_y_continuous(sec.axis = sec_axis(~ . * totalSales / ymax)) +
theme_bw()
p

https://stackoverflow.com/questions/58916527
复制相似问题