excel - 从表格到 Excel 中的 2 列
问题描述
我想从一个表中创建两列。
正确的解决方案是这样的(这将是 2 个单独的列):
从此表:
该表比这长得多,这是一个例子。
你能帮我解决这个问题吗?
谢谢,格戈
解决方案
要将现有数据加载到 PQ 中,它需要是一个表。为了简单起见,我会将其转换为表格并取消选中“我的表格有标题”。然后在您的标识符行上放置一些标签,以便我们轻松转换它们。我做完之后是这个样子的。
然后使用“From Table”选项将您的表加载到 PQ 中。默认情况下,它可能会尝试设置类型和提升标题,这没有帮助,因此删除这些步骤。它应该看起来像这样。
为了能够映射您的多行标题,我们需要进行一些数据透视转换。引用我们刚刚导入的表。
保留前 3 行,选择第一列和“Unpivot Other Columns”。然后再次选择第一列和“Pivot Columns”。选择“值”列作为“值列”,然后在“高级选项”下选择“不聚合”。
在这个透视之后,您现在将拥有一个将所有列映射到它们的标题行的表。我将带有数字的列转换为文本,因为稍后我们会将其作为文本附加。结果表如下所示:
此查询的完整代码是:
let
Source = Table1,
#"Kept First Rows" = Table.FirstN(Source,3),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Kept First Rows", {"Column1"}, "Attribute", "Value"),
#"Pivoted Column" = Table.Pivot(#"Unpivoted Other Columns", List.Distinct(#"Unpivoted Other Columns"[Column1]), "Column1", "Value"),
#"Changed Type" = Table.TransformColumnTypes(#"Pivoted Column",{{"Region", type text}})
in
#"Changed Type"
然后返回并再次引用您导入的表。这次删除前 3 行,选择第一列和 Unpivot Other Columns。您将获得一个日期列表,其中包含所有其他未透视的数据列。现在,您可以通过匹配此表中的属性列和您映射标题行的表来合并查询。
展开合并的数据,现在您将标题行映射到表中的每一行数据。您可以添加一个自定义列来创建您想要的唯一 ID 列,然后删除并移动这些列以获得您想要的结果数据。自定义列代码对我来说如下所示:
[Country Code]&"_"&DateTime.ToText([Column1], "MM/dd/yyyy")&"_"&[Region]
这是结果表:
这部分的完整 M 代码是:
let
Source = Table1,
#"Removed Top Rows" = Table.Skip(Source,3),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Removed Top Rows", {"Column1"}, "Attribute", "Value"),
#"Merged Queries" = Table.NestedJoin(#"Unpivoted Other Columns",{"Attribute"},RowIDs,{"Attribute"},"RowIDs",JoinKind.LeftOuter),
#"Expanded RowIDs" = Table.ExpandTableColumn(#"Merged Queries", "RowIDs", {"Country Code", "Country", "Region"}, {"Country Code", "Country", "Region"}),
#"Added Custom" = Table.AddColumn(#"Expanded RowIDs", "ID", each [Country Code]&"_"&DateTime.ToText([Column1], "MM/dd/yyyy")&"_"&[Region]),
#"Removed Other Columns" = Table.SelectColumns(#"Added Custom",{"Value", "ID"}),
#"Reordered Columns" = Table.ReorderColumns(#"Removed Other Columns",{"ID", "Value"})
in
#"Reordered Columns"
推荐阅读
- python - 简化networkx节点标签
- javascript - 如何将数据从 ReactJS 发布到 NodeJS Express API
- node.js - 新连接的客户端如何在 AWS IOT 中获取旧消息
- python - Python机器学习
- go - 如何使 template.Execute() 写入文件而不是 response.Writer?
- ios - 调用 TNSMutableDictionary.Create 后,我们需要调用 release 吗?
- ruby-on-rails - 如何将 URL 参数传递给 Rails 应用程序中的内部链接?
- python - 使用 uwsgi 对服务器中的 Flask 应用程序进行更改后没有任何反应
- hive - 将表从 Hive 迁移到 Cassandra - 使用 COPY
- javascript - Ionic - 我如何得到下周的日期?