首页 > 解决方案 > 在 Power Bi 中反透视数据并分离整数和字符串

问题描述

在此处输入图像描述

以上是我目前的输入。

以下是所需的输出。

在此处输入图像描述

目前,我将数据加载到 Power Bi 中,并使用 Power Query 编辑器在“仅选定列”上“取消透视列”。这会产生一列混合数据类型(整数和字符串)。有没有人能够在数据加载时建议一种有效的方法如何分隔字符串值和整数?

在此处输入图像描述

以下是高级编辑器的代码

let
Source = Csv.Document(File.Contents("F:\Surveys\dev\pivottest.csv"),[Delimiter=",", Columns=5, Encoding=1252, QuoteStyle=QuoteStyle.None]),
#"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"responseid", Int64.Type}, {"q1", Int64.Type}, {"q2", type text}, {"q3", Int64.Type}, {"q4", type text}}),
#"Unpivoted Only Selected Columns" = Table.Unpivot(#"Changed Type", {"q1", "q2", "q3", "q4"}, "Attribute", "Value") 
in
#"Unpivoted Only Selected Columns"

标签: powerbi

解决方案


取消透视数据后,请在您的列上使用函数Value.Is 。要检查一个值是否为数字,它看起来像这样:

Value.Is([Column], Int64.Type)

Example, 
IsNumber =Value.Is(Value.FromText([ColumnOfMixedValues]), type number)

要检查文本,它将是:

Value.Is([Column],type text)

Example,
IsText =Value.Is(Value.FromText([ColumnOfMixedValues]), type text)

Value.Is 返回布尔值 true/false,因此您可以将其包装在 IF 中。

if Value.Is(AlphaNumeric, type text) then AlphaNumeric else Number.ToText(AlphaNumeric)) 

推荐阅读