- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Microsoft Excel 2013 中使用 Power Query,我创建了一个如下所示的表格:
// To insert this in Power Query, append a '=' before the 'Table.FromRows'
Table.FromRows(
{
{"0", "Tom", "null", "null"},
{"1", "Bob", [ name="Berlin" , street="BarStreet" ], [ name="Mary", age=25 ]},
{"2", "Jim", [ name="Hamburg", street="FooStreet" ], [ name="Marta", age=30 ]}
},
{"ID", "Name", "Address", "Wife"}
)
现在,我想使用 name
属性扩展列 Address
和 Wife
在两个记录上。手动,我会这样做:
// To insert this in Power Query, append a '=' before the 'Table.FromRows'
let
t = Table.FromRows(
{
{"0", "Tom", "null", "null"},
{"1", "Bob", [ name="Berlin" , street="BarStreet" ], [ name="Mary", age=25 ]},
{"2", "Jim", [ name="Hamburg", street="FooStreet" ], [ name="Marta", age=30 ]}
},
{"ID", "Name", "Address", "Wife"}
),
expAddress = Table.ExpandRecordColumn(t, "Address", {"name"}, {"Address → name"}),
expWife = Table.ExpandRecordColumn(expAddress, "Wife", {"name"}, {"Wife → name"})
in
expWife
每当我有不同布局的数据表时,我需要重写询问。在幻想世界中,您可以展开所有包含 Records 的列他们使用特定的 key 。 理想情况下,您将拥有以下库功能:
// Returns a list with the names of the columns that match the secified type.
// Will also try to infer the type of a column if the table is untyped.
Table.ColumnsOfTypeInfer(
table as table,
listOfTypes as list
) as list
// Expands a column of records into columns with each of the values.
Table.ExpandRecordColumnByKey(
table as table,
columns as list,
key as text,
) as table
然后,我可以调用
// To insert this in Power Query, append a '=' before the 'Table.FromRows'
let
t = Table.FromRows(
{
{"0", "Tom", "null", "null"},
{"1", "Bob", [ name="Berlin" , street="BarStreet" ], [ name="Mary", age=25 ]},
{"2", "Jim", [ name="Hamburg", street="FooStreet" ], [ name="Marta", age=30 ]}
},
{"ID", "Name", "Address", "Wife"}
),
recordColumns = Table.ColumnsOfTypeInfer(t, {type record}),
expAll = Table.ExpandRecordColumnByKey(t, recordColumns, "name")
in
expAll
最佳答案
(首先,感谢您提供清晰的解释以及示例数据和建议!)
1) M 代码无法进行类型推断。这种限制几乎可以被视为一种“特性”,因为如果源数据发生变化导致推断类型不同,那么它几乎肯定会破坏您的查询。
加载未类型化数据后,使用 Detect Data Type 应该很快按钮为此生成 M。或者,如果您正在从 JSON 读取数据,那么它应该已经足够类型化了。
如果您遇到这种方法不起作用的特定情况,是否想更新您的问题? :)
2) 只要表的单元格值是记录,就很有可能使记录扩展成为通用的,只是有点复杂。这会找到所有行都是 null
或记录的列,并展开 name
列。
以下是您可以添加到库中的一些简单实现:
let
t = Table.FromRows(
{
{"0", "Tom", null, null},
{"1", "Bob", [ name="Berlin" , street="BarStreet" ], [ name="Mary", age=25 ]},
{"2", "Jim", [ name="Hamburg", street="FooStreet" ], [ name="Marta", age=30 ]}
},
{"ID", "Name", "Address", "Wife"}
),
Table.ColumnsOfAllRowType = (table as table, typ as type) as list => let
ColumnNames = Table.ColumnNames(table),
ColumnsOfType = List.Select(ColumnNames, (name) =>
List.AllTrue(List.Transform(Table.Column(table, name), (cell) => Type.Is(Value.Type(cell), typ))))
in
ColumnsOfType,
Table.ExpandRecordColumnByKey = (table as table, columns as list, key as text) as table =>
List.Accumulate(columns, table, (state, columnToExpand) =>
Table.ExpandRecordColumn(state, columnToExpand, {key}, { columnToExpand & " → " & key })),
recordColumns = Table.ColumnsOfAllRowType(t, type nullable record),
expAll = Table.ExpandRecordColumnByKey(t, recordColumns, "name")
in
expAll
如果一个新的库函数可以在 M 中实现,我们就不太可能将它添加到我们的标准库中,但如果您觉得缺少它,请随时在以下位置提出建议:https://ideas.powerbi.com/forums/265200-power-bi/
您可能有一个很好的理由来添加像 Table.ReplaceTypeFromFirstRow(table as table) as table
这样的东西,因为用 M 构造类型非常困惑。
关于Powerquery:展开其中有记录的所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35767600/
我正在尝试运行一个返回具有相应日期索引和日期文本的表的函数。这样我就可以在教程屏幕中显示信息。但是,我对如何访问以前的记录感到困惑。这是我的伪代码: ForAll( Tweets (sorted by
在 Microsoft Excel 2013 中使用 Power Query,我创建了一个如下所示的表格: // To insert this in Power Query, append a '='
如何间接指代任何事物?在我的情况下,它是一个列名。语言文档的“现场访问”部分让我一无所知。 例如 let OriginalStrings = "some string with {tkn1}
我想在电源查询中选择某些列,但不使用它们的名称。前任。我可以在 R 中通过命令执行此操作:select。我想知道如何在电源查询中做到这一点。找了些资料here ,但不是我需要的全部。 任何想法,如果我
鉴于以下 JSON,我正在尝试将其加载到 Excel 中。我想将“评级”部分格式化为单个分隔字符串/单元格。我对 PowerQuery 还很陌生,所以我很难做到这一点。我已经设法将记录列表格式化为
有没有一种使用 PowerQuery 的简单方法来计算一个文本字符串在另一个文本字符串中的出现次数? 例如,如果我有字符串“敏捷的棕色狐狸跳过懒惰的狗而懒惰的狗没有注意到”,我如何轻松确定词懒惰和狗出
这应该是一个简单的问题。我是 Power Query 的新手。 我有一个报告表,有一列“查询”是我工作簿中的查询名称。我想添加一列来计算查询中的行数。 我使用的公式是 =Table.AddColumn
我已经根据我的源数据在 PowerQuery 中构建了几个额外的列。这包括两个“TextContains”列,它们只返回“TRUE”或“FALSE”。我现在想要一个额外的列来突出显示不同的服务类型并使
简单介绍。 最近的任务:添加 15 个具有相同值的列。 解决方案:我没有连续使用 Table.AddColumn,而是应用了以下方法。 = Table.RemoveColumns( Table
我正在反透视和转置(输入),以便为内部系统格式化(输出)。 @RonRosenfeld 在 solution 中提供的解决方案解决了这个问题。 但是,输出的年份被硬编码为 2022,这很好,直到我们到
如果我创建了一个从文件夹导入 XML 的 PowerQuery 函数,当文件夹中有新文件以仅包含来自这些新文件的数据并将数据附加到当前表时,如何在同一个 excel 文件中重用查询? 最佳答案 如果您
如何避免从例如完全重新加载SQL Server 每次我在 PowerQuery 中添加/更改自定义列时? 我希望 PowerQuery 仅使用本地(数据模型)数据,除非我点击刷新按钮。 最佳答案 您可
我正在尝试将 Power Query 与此表一起使用: 我的目标是在第 1 列和第 2 列的第 3 列“GRPEFFDTE”中找到最大值。如果这是正常的 excel,我会使用: =+IF(MAXIFS
我正在通过 Powerquery 将大量表格从 pdf 文件导入 Excel - 效果很好。 除了其他几个迁移之外,我还有以下我无法解决的任务: 在某些情况下 - 特别是。分页符后 - 应该进入单个单
我正在使用 Excel powerquery 从 Elasticsearch 中提取数据。对于一个结果来说效果很好,但我想得到很多结果。从最初的 ES 查询中,我得到了一个 json 对象列表,我可以
在PowerQuery中我需要导入一个固定宽度的txt文件(每一行都是一些字段的串联,每个字段都有固定的特定长度)。当我导入它时,我得到一个表,其中包含一个包含 txt 行的单列,例如采用以下格式:
是否有任何可靠的方法可以从此查询中获取 PowerQuery 查询所在工作簿的完整文件名? 我尝试通过在隐藏工作表中插入公式 =CELL("filename") 来实现此目的,但这并不可靠。当我切换工
如果我有下表(如下图所示),我如何编写一个分组查询来连接分组结果? 对于此示例,我希望按 LetterColumn 进行分组并连接 NumberColumn 所以期望的结果是: 最佳答案 您可以使用
我想在 json 响应中展开所有列表和记录。列就像例如(这是动态的,也可以是10条记录5个列表): 文本,文本,[列表],[列表],文本,[记录],[记录],字符串,[记录] 我写了一个函数来获取特定
我有一系列通过 PowerQuery 导入数据的工作簿。 源文件只有 Date字段每第 4 行完成一次。每个日期有 3 个特定于站点的条目。 下面的 Markdown 表显示了当我通过 PowerQu
我是一名优秀的程序员,十分优秀!