PowerQuery - Fill missing data according to specific pattern

ⅰ亾dé卋堺 提交于 2020-12-15 06:08:25

问题


I am trying to clean data received from an Excel file and transform it using PowerQuery (in PowerBI) into a useable format. Below a sample table, and what I am trying to do:

| Country   | Type of location  |
|---------  |------------------ |
| A         | 1                 |
|           | 2                 |
|           | 3                 |
| B         | 1                 |
|           | 2                 |
|           | 3                 |
| C         | 1                 |
|           | 2                 |
|           | 3                 |

As you can see, I have a list of location types for each country (always constant, always the same number per country, ie each country has 3 rows for 3 location types)

What I am trying to do is to see if there is a way to fill the empty cells in the "Country" column, with the appropriate Country name, which would give something like this:

| Country   | Type of location  |
|---------  |------------------ |
| A         | 1                 |
| A         | 2                 |
| A         | 3                 |
| B         | 1                 |
| B         | 2                 |
| B         | 3                 |
| C         | 1                 |
| C         | 2                 |
| C         | 3                 |

For now I thought about using a series of if/else if conditions, but as there are 100+ countries this doesn't seem like the right solution.

Is there any way to do this more efficiently?


回答1:


As Murray mentions, the Table.FillDown function works great and is built into the GUI under the Transform tab in the query editor:

Note that it only fills down to replace nulls, so if you have empty strings instead of nulls in those rows, you'll need to do a replacement first. The button for that is just above the Fill button in the GUI and you'd use the dialog box like this

or else just use the M code that this generates instead of the GUI:

= Table.ReplaceValue(#"Previous Step","",null,Replacer.ReplaceValue,{"Country"})



回答2:


Yes, like you can do in Excel, you can fill down.

From the docs - Table.FillDown

I believe you will need to sort the data correctly first.

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"}
)


来源:https://stackoverflow.com/questions/64540697/powerquery-fill-missing-data-according-to-specific-pattern

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!