如何按 Category = Animal
过滤表,然后按类分组,并计算每个组的不同 id?
到目前为止,我只能分组并计算不同的值:
output = SUMMARIZE(my_table, my_table[Class], "Distinct Count", DISTINCTCOUNT(my_table[Id]))
我试过了:
output = CALCULATETABLE(SUMMARIZE(my_table, my_table[Class]), DISTINCTCOUNT(my_table[Id]), FILTER(my_table, my_table[Category ] = "Animal"))
发现错误:
The True/False expression does not specify a column. Each True/False expressions used as a table filter expression must refer to exactly one column.
我也尝试了这个 post 建议的方式,但它只计算表中的行数,而不是 Id
的不同数量。
答案 0 :(得分:1)
试试这个:
output =
SUMMARIZECOLUMNS (
my_table[Class],
TREATAS ( { "Animal" }, my_table[Category] ),
"Distinct Count", DISTINCTCOUNT ( my_table[Id] )
)
另一种选择:
output =
CALCULATETABLE (
ADDCOLUMNS (
VALUES ( my_table[Class] ),
"Distinct ID", CALCULATE ( DISTINCTCOUNT ( my_table[Id] ) )
),
my_table[Category ] = "Animal"
)
SUMMARIZECOLUMNS 版本通常是一种优化的代码编写方式,因此您应该更喜欢这种方式。我仅出于学习目的加入了 ADDCOLUMNS/CALCULATETABLE 结构。
答案 1 :(得分:1)
您以这种方式过滤:
VAR __MyFilterTable = FILTER( ALL(T[category]), T[category] = "animal" )
RETURN
SUMMARIZECOLUMNS (
T[category],
__MyFilterTable
)
或者更短:
VAR __MyFilterTable = TREATAS ({"animal"}, T[category] )
RETURN
SUMMARIZECOLUMNS (
T[category],
__MyFilterTable
)