【发布时间】:2019-12-03 10:40:58
【问题描述】:
如何计算按销售级别定义的类别中的排名。假设我们希望将销售额高于某个阈值的产品标记为“高”类别,低于该阈值的产品标记为“低”类别。
这是一个示例数据。
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcisqzSwpVtJRSiwoyEkF0oZKsTpIwkmJeUAIZJigipfn56QlpRYVVQLZpqhSyRlQcWOweFhqempJYlJOKlgusagovwS7XEF+SWJJPtwJKHL5eZn5eUDaHNUqHI5GdkEsAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Category = _t, Product = _t, Amount = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Amount", Int64.Type}})
in
#"Changed Type"
我的问题是一个与its older uncle 相关的侄子,我现在想打电话给他:
Percent Rank within Category =
VAR HasOneValueTrue = HASONEVALUE ( MyTable[Product] )
VAR tbl =
CALCULATETABLE (
VALUES ( MyTable[Product] ),
REMOVEFILTERS ( MyTable[Product] ),
VALUES ( MyTable[Category] )
)
VAR result =
CALCULATE (
DIVIDE (
RANKX (
tbl,
[Sales],
,
ASC
) - 1,
COUNTROWS ( tbl ) - 1
)
)
RETURN
IF (
HasOneValueTrue,
result
)
不同之处在于叔叔在表格列中定义了类别,但现在我们希望根据销售水平动态计算类别。所以我尝试了
将VAR tbl代码替换为阈值为4的以下代码:
var tbl =
SUMMARIZECOLUMNS (
MyTable[Product],
"CalculatedCategory", IF ( [Sales] > 4, "high", "low" ),
"AggSales", [Sales]
)
不过,我无法引用这样定义的变量。基于首先创建 DAX 表然后尝试引用它,我的试验也失败了。
以下是预期结果:
参考文献
这是我在接近陈述这个问题的过程中遇到的一系列相关问题。
DAX equivalent of Excel PERCENTRANK.INC per category
The value parameter in DAX function RANKX
DAX ALLEXCEPT to sum by category of multiple dimension tables
【问题讨论】:
-
你能展示你想要的结果吗?
-
@AlexisOlson 预期结果已送达!