#powerbi #powerquery #powerbi-desktop #m
#powerbi #powerquery #powerbi-рабочий стол #m
Вопрос:
Я пытаюсь очистить данные, полученные из файла Excel, и преобразовать их с помощью PowerQuery (в PowerBI) в удобный формат. Ниже пример таблицы, и что я пытаюсь сделать:
| 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 стран, это не кажется правильным решением.
Есть ли какой-либо способ сделать это более эффективно?
Ответ №1:
Как упоминает Мюррей, Table.FillDown
функция отлично работает и встроена в графический интерфейс пользователя на вкладке Преобразование в редакторе запросов:
Обратите внимание, что он заполняется только для замены нулей, поэтому, если у вас есть пустые строки вместо нулей в этих строках, вам нужно сначала выполнить замену. Кнопка для этого находится чуть выше кнопки заполнения в графическом интерфейсе, и вы бы использовали диалоговое окно следующим образом
или просто используйте код M, который он генерирует, вместо графического интерфейса:
= Table.ReplaceValue(#"Previous Step","",null,Replacer.ReplaceValue,{"Country"})
Ответ №2:
Да, как вы можете сделать в Excel, вы можете заполнить.
Из docs — таблицы.Заполнение
Я полагаю, что сначала вам нужно будет правильно отсортировать данные.
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"}
)