gpt4 book ai didi

powerquery - 如何在电源查询中选择特定列

转载 作者:行者123 更新时间:2023-12-04 08:40:51 24 4
gpt4 key购买 nike

我想在电源查询中选择某些列,但不使用它们的名称。前任。我可以在 R 中通过命令执行此操作:select。我想知道如何在电源查询中做到这一点。找了些资料here ,但不是我需要的全部。
任何想法,如果我想引用多列?
如果我编写如下代码,则不起作用:

#"Filtered Part Desc" = Table.SelectRows ( 
#"Removed Columns3",
each List.Contains(
{ "ENG", "TRANS" },
Record.Field(_, Table.ColumnNames(#"Removed Columns3") { 5, 6, 7 })
)
)

最佳答案

假设我有这张 table ,想对它做几件事。
Source table
首先,我想更改第二列和最后一列的列类型。我们可以使用 Table.ColumnNames使用简单的索引(从零开始)来做到这一点,如下所示:

Table.TransformColumnTypes(
Source,
{
{Table.ColumnNames(Source){1}, Int64.Type},
{Table.ColumnNames(Source){3}, Int64.Type}
}
)
这可行,但需要单独指定每个索引。如果我们想像这样取消旋转这些列
Table.Unpivot(#"Changed Type", {"Col2", "Col4"}, "Attribute", "Value")
但是使用索引值代替我们可以使用与上面相同的方法
Table.Unpivot(
#"Changed Type",
{
Table.ColumnNames(Source){1},
Table.ColumnNames(Source){3}
}, "Attribute", "Value"
)
但是有没有办法做到这一点,我们可以使用单个位置索引值列表并使用 Table.ColumnNames只有一次?我在 this blog 上找到了一个相对简单但不直观的方法.对于这种情况,它的工作原理如下:
Table.Unpivot(
#"Changed Type",
List.Transform({1,3}, each Table.ColumnNames(Source){_}),
"Attribute", "Value"
)
此方法从位置索引值列表开始,然后通过查找与这些位置对应的列的名称将它们转换为列名称。

这是我正在使用的查询的完整 M 代码:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WSlTSUTIE4nIgtlSK1YlWSgKyjIC4AogtwCLJQJYxEFcCsTlYJAXIMgHiKiA2U4qNBQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Col1 = _t, Col2 = _t, Col3 = _t, Col4 = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{Table.ColumnNames(Source){1}, Int64.Type},{Table.ColumnNames(Source){3}, Int64.Type}}),
#"Unpivoted Columns" = Table.Unpivot(#"Changed Type", List.Transform({1,3}, each Table.ColumnNames(Source){_}), "Attribute", "Value")
in
#"Unpivoted Columns"

关于powerquery - 如何在电源查询中选择特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64576814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com