我需要创建一个饼图来显示每个费率的数量。但是,我无法将度量值放入值字段中。
所以我有两张桌子。
列表
没有 |
---|
A1 |
A2 |
A3 |
B1 |
B2 |
成绩表
姓名 | 年 | 没有 | 率 |
---|---|---|---|
ABC | 2022 | A1 | 好 |
ABC | 2022 | B2 | 好 |
ABC | 2021 | A2 | 不好 |
防御 | 2022 | A1 | 不好 |
GHI | 2022 | B1 | 好 |
我想要的
姓名 | 年 | 没有 | 率 |
---|---|---|---|
ABC | 2021 | A1 | 好 |
ABC | 2021 | A2 | 不好 |
ABC | 2021 | A3 | 好 |
ABC | 2021 | B1 | 好 |
ABC | 2021 | B2 | 好 |
ABC | 2022 | A1 | 好 |
ABC | 2022 | A2 | 好 |
ABC | 2022 | A3 | 好 |
ABC | 2022 | B1 | 好 |
ABC | 2022 | B2 | 好 |
防御 | 2022 | A1 | 不好 |
防御 | 2022 | A2 | 好 |
防御 | 2022 | A3 | 好 |
防御 | 2022 | B1 | 好 |
防御 | 2022 | B2 | 好 |
GHI | 2022 | A1 | 好 |
GHI | 2022 | A2 | 好 |
GHI | 2022 | A3 | 好 |
GHI | 2022 | B1 | 好 |
GHI | 2022 | B2 | 好 |
所以为了实现我想要的,我交叉连接了两个表。
Table = CROSSJOIN('List Table',SELECTCOLUMNS('Result Table', "Name", 'Result Table'[Name]))
并且还在我加入名称+年份+子句的每个表中添加了一个键列。那我只能选择多对多的关系了
为了显示好的,我创建了一个度量
if (HASONEVALUE('Result Table'[Rate]), min('Result Table'[Rate]) , "ok")
我的过程也可能是错误的,所以有什么想法吗?
既然我明白了你想要做得更好,我想我会从 Power Query 而不是 DAX 来做这件事。您将不得不跳过箍来执行交叉连接、复合键、关系和度量。它将为每个报告驱动额外的计算,如果您有大量数据,它会很慢。
在 Power Query 中,加载时间会稍长一些,但在报告中执行速度会更快,数据模型会干净简单。进行交叉连接以获得名称、年份和编号的组合,然后合并您拥有的费率。然后用“ok”替换空值。
Power Query 中的交叉联接需要像这样的不同列
Table.Distinct(Table.SelectColumns(Data,"Name"))
。然后添加一个列,该列是不同值的表Table.AddColumn(Source, "Year", each Table.Distinct(Table.SelectColumns(Data,"Year")))
。当你展开这个列时,你有一个交叉连接。
let
Source = Table.Distinct(Table.SelectColumns(Data,"Name")),
#"Added Distinct Years" = Table.AddColumn(Source, "Year", each Table.Distinct(Table.SelectColumns(Data,"Year"))),
#"Expanded Year" = Table.ExpandTableColumn(#"Added Distinct Years", "Year", {"Year"}, {"Year"}),
#"Added Distinct No" = Table.AddColumn(#"Expanded Year", "Custom", each Table.Distinct(Table.SelectColumns(Data,"No"))),
#"Expanded No" = Table.ExpandTableColumn(#"Added Distinct No", "Custom", {"No"}, {"No"}),
#"Merged with Data" = Table.NestedJoin(#"Expanded No", {"Name", "No", "Year"}, Data, {"Name", "No", "Year"}, "Data", JoinKind.LeftOuter),
#"Added Rate" = Table.ExpandTableColumn(#"Merged with Data", "Data", {"Rate"}, {"Rate"}),
#"Replaced Value" = Table.ReplaceValue(#"Added Rate",null,"ok",Replacer.ReplaceValue,{"Rate"})
in
#"Replaced Value"