Power Query 是否有等效的 ISNUMBER() 或 ISTEXT()?
Is there an ISNUMBER() or ISTEXT() equivalent for Power Query?
我有一列包含混合类型的数字和文本,我试图使用 if
... then
... else
条件将它们分成不同的列。是否有 ISNUMBER()
或 ISTEXT
等效于电源查询?
这在一定程度上取决于数据的性质及其最初的编码方式。 Power Query 的类型比 Excel.
强
例如:
Source = Table.FromRecords({[A=1],[A="1"],[A="a"]})
创建一个包含三行的 table。第一行的数据类型是数字。第二行和第三行都是文本。但是第二行的文本可以解释为数字。
以下是创建两个新列的查询,显示每行是文本还是数字类型。第一列检查数据类型。第二列尝试根据值猜测数据类型。猜测代码假定不是数字的所有内容都是文本。
示例代码
编辑:借用@AlejandroLopez-Lago-MSFT 对解释类型的评论。
let
Source = Table.FromRecords({[A=1],[A="1"],[A="a"]}),
#"Added Custom" = Table.AddColumn(Source, "Type", each
let
TypeLookup = (inputType as type) as text =>
Table.FromRecords(
{
[Type=type text, Value="Text"],
[Type=type number, Value="Number"]
}
){[Type=inputType]}[Value]
in
TypeLookup(Value.Type([A]))
),
#"Added Custom 2" = Table.AddColumn(#"Added Custom", "Interpreted Type", each
let
result = try Number.From([A]) otherwise "Text",
resultType = if result = "Text" then "Text" else "Number"
in
resultType
)
in
#"Added Custom 2"
示例输出
ISTEXT() 在我使用过的任何语言中都不存在 - 通常任何数字或日期值都可以转换为文本,那么什么是错误结果?
对于 ISNUMBER,我无需任何代码即可通过将数据类型更改为数字类型来解决此问题,例如整数。任何未转换的行将显示 Error - 然后您可以应用 Replace Errors 或 Remove Errors处理它们。
如果不想打扰原始列,请先使用复制列。
这里是如何在 Excel Powerquery
中检查类型
IsNumber
=Value.Is(Value.FromText([ColumnOfMixedValues]), type number)
IsText
=Value.Is(Value.FromText([ColumnOfMixedValues]), type text)
希望对您有所帮助!
我同意 Mike Honey 的观点。
我有一个混合了 Char 和 Num 的 SKU 代码。
通常最后 8 个字符是数字,但在某些奇怪的情况下,SKU 会用一个额外的字母重复,但给出相同的 EAN,这会导致混乱。
通过使用 Text.End(SKU, 1) 创建一个新的临时列,我只得到最后一个字符。然后我将该列转换为整数。然后删除所有错误行,只留下我需要的行。然后我删除了临时列,并以我开始使用的格式留下了我需要的行。
将其放入逻辑测试格式
Value.Type([Column1]) = type number
Value.Type([Column1]) = type text
函数 Value.Type
return 是 type
,因此将其放入等式中因此 return 是真/假。
同样,
Value.Type([Column1]) = Date.Type
Value.Type([Column1]) = Text.Type
HTH
我有一列包含混合类型的数字和文本,我试图使用 if
... then
... else
条件将它们分成不同的列。是否有 ISNUMBER()
或 ISTEXT
等效于电源查询?
这在一定程度上取决于数据的性质及其最初的编码方式。 Power Query 的类型比 Excel.
强例如:
Source = Table.FromRecords({[A=1],[A="1"],[A="a"]})
创建一个包含三行的 table。第一行的数据类型是数字。第二行和第三行都是文本。但是第二行的文本可以解释为数字。
以下是创建两个新列的查询,显示每行是文本还是数字类型。第一列检查数据类型。第二列尝试根据值猜测数据类型。猜测代码假定不是数字的所有内容都是文本。
示例代码
编辑:借用@AlejandroLopez-Lago-MSFT 对解释类型的评论。
let
Source = Table.FromRecords({[A=1],[A="1"],[A="a"]}),
#"Added Custom" = Table.AddColumn(Source, "Type", each
let
TypeLookup = (inputType as type) as text =>
Table.FromRecords(
{
[Type=type text, Value="Text"],
[Type=type number, Value="Number"]
}
){[Type=inputType]}[Value]
in
TypeLookup(Value.Type([A]))
),
#"Added Custom 2" = Table.AddColumn(#"Added Custom", "Interpreted Type", each
let
result = try Number.From([A]) otherwise "Text",
resultType = if result = "Text" then "Text" else "Number"
in
resultType
)
in
#"Added Custom 2"
示例输出
ISTEXT() 在我使用过的任何语言中都不存在 - 通常任何数字或日期值都可以转换为文本,那么什么是错误结果?
对于 ISNUMBER,我无需任何代码即可通过将数据类型更改为数字类型来解决此问题,例如整数。任何未转换的行将显示 Error - 然后您可以应用 Replace Errors 或 Remove Errors处理它们。
如果不想打扰原始列,请先使用复制列。
这里是如何在 Excel Powerquery
中检查类型IsNumber
=Value.Is(Value.FromText([ColumnOfMixedValues]), type number)
IsText
=Value.Is(Value.FromText([ColumnOfMixedValues]), type text)
希望对您有所帮助!
我同意 Mike Honey 的观点。 我有一个混合了 Char 和 Num 的 SKU 代码。 通常最后 8 个字符是数字,但在某些奇怪的情况下,SKU 会用一个额外的字母重复,但给出相同的 EAN,这会导致混乱。 通过使用 Text.End(SKU, 1) 创建一个新的临时列,我只得到最后一个字符。然后我将该列转换为整数。然后删除所有错误行,只留下我需要的行。然后我删除了临时列,并以我开始使用的格式留下了我需要的行。
将其放入逻辑测试格式
Value.Type([Column1]) = type number
Value.Type([Column1]) = type text
函数 Value.Type
return 是 type
,因此将其放入等式中因此 return 是真/假。
同样,
Value.Type([Column1]) = Date.Type
Value.Type([Column1]) = Text.Type
HTH