使用 Power BI 中的度量创建图表

问题描述 投票:0回答:1

我需要创建一个饼图来显示每个费率的数量。但是,我无法将度量值放入值字段中。

所以我有两张桌子。

列表

没有
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")

我的过程也可能是错误的,所以有什么想法吗?

powerquery powerbi-desktop
1个回答
0
投票

既然我明白了你想要做得更好,我想我会从 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"

© www.soinside.com 2019 - 2024. All rights reserved.