Power Query - 根据特定模式填充缺失数据
PowerQuery - Fill missing data according to specific pattern
我正在尝试清理从 Excel 文件接收到的数据,并使用 PowerQuery(在 PowerBI 中)将其转换为可用格式。
下面是示例 table,以及我正在尝试做的事情:
| Country | Type of location |
|--------- |------------------ |
| A | 1 |
| | 2 |
| | 3 |
| B | 1 |
| | 2 |
| | 3 |
| C | 1 |
| | 2 |
| | 3 |
如您所见,我有每个国家/地区的位置类型列表(始终不变,每个国家/地区的数量始终相同,即每个国家/地区有 3 行对应 3 种位置类型)
我想做的是看看是否有办法用适当的国家/地区名称填充“国家/地区”列中的空单元格,这会给出如下内容:
| Country | Type of location |
|--------- |------------------ |
| A | 1 |
| A | 2 |
| A | 3 |
| B | 1 |
| B | 2 |
| B | 3 |
| C | 1 |
| C | 2 |
| C | 3 |
现在我考虑使用一系列 if/else if 条件,但由于有 100 多个国家/地区,这似乎不是正确的解决方案。
有什么方法可以更有效地做到这一点?
是的,就像您在Excel中所做的那样,您可以填写。
来自文档 - Table.FillDown
我相信您首先需要对数据进行正确排序。
Table.FillDown(
Table.FromRecords({
[Place = 1, Name = "Bob"],
[Place = null, Name = "John"],
[Place = 2, Name = "Brad"],
[Place = 3, Name = "Mark"],
[Place = null, Name = "Tom"],
[Place = null, Name = "Adam"]
}),
{"Place"}
)
正如 Murray 提到的那样,Table.FillDown
函数非常有用,它内置于 GUI 中查询编辑器的“转换”选项卡下:
请注意,它只会向下填充以替换空值,因此如果这些行中有空字符串而不是空值,则需要先进行替换。该按钮就在 GUI 中的“填充”按钮上方,您可以像这样使用对话框
或者只使用它生成的 M 代码而不是 GUI:
= Table.ReplaceValue(#"Previous Step","",null,Replacer.ReplaceValue,{"Country"})
我正在尝试清理从 Excel 文件接收到的数据,并使用 PowerQuery(在 PowerBI 中)将其转换为可用格式。 下面是示例 table,以及我正在尝试做的事情:
| Country | Type of location |
|--------- |------------------ |
| A | 1 |
| | 2 |
| | 3 |
| B | 1 |
| | 2 |
| | 3 |
| C | 1 |
| | 2 |
| | 3 |
如您所见,我有每个国家/地区的位置类型列表(始终不变,每个国家/地区的数量始终相同,即每个国家/地区有 3 行对应 3 种位置类型)
我想做的是看看是否有办法用适当的国家/地区名称填充“国家/地区”列中的空单元格,这会给出如下内容:
| Country | Type of location |
|--------- |------------------ |
| A | 1 |
| A | 2 |
| A | 3 |
| B | 1 |
| B | 2 |
| B | 3 |
| C | 1 |
| C | 2 |
| C | 3 |
现在我考虑使用一系列 if/else if 条件,但由于有 100 多个国家/地区,这似乎不是正确的解决方案。
有什么方法可以更有效地做到这一点?
是的,就像您在Excel中所做的那样,您可以填写。
来自文档 - Table.FillDown
我相信您首先需要对数据进行正确排序。
Table.FillDown(
Table.FromRecords({
[Place = 1, Name = "Bob"],
[Place = null, Name = "John"],
[Place = 2, Name = "Brad"],
[Place = 3, Name = "Mark"],
[Place = null, Name = "Tom"],
[Place = null, Name = "Adam"]
}),
{"Place"}
)
正如 Murray 提到的那样,Table.FillDown
函数非常有用,它内置于 GUI 中查询编辑器的“转换”选项卡下:
请注意,它只会向下填充以替换空值,因此如果这些行中有空字符串而不是空值,则需要先进行替换。该按钮就在 GUI 中的“填充”按钮上方,您可以像这样使用对话框
或者只使用它生成的 M 代码而不是 GUI:
= Table.ReplaceValue(#"Previous Step","",null,Replacer.ReplaceValue,{"Country"})