Power Query Ошибки №13. Удалить пустые столбцы

preview_player
Показать описание
Как без хардкода автоматически удалить пустые столбцы в Power Query, которые есть в импортируемой таблицы. Разберем 2 способа. Один из них прост до безобразия, а для второго понадобится функция Table.Profile.

Рекомендации по теме
Комментарии
Автор

Ваши методы удаление столбцов намного проще, спасибо за обучение.

grfqfkj
Автор

Огромное спасибо, Тимур, за разбор моей проблемы! Искренне надеюсь, что решение будет полезно и другим подписчикам! Согласитесь, что первое решение выглядит более изящно! А во втором, меня удивило, что Вы применили столбец сведения, я и не знал, что это равносильно обратному пивоту, опять же - польза!
А скажите пожалуйста, а есть какая-нибудь стандартная метода выдёргивать таблицы из документов Word? Я пробовал сначала сохранить как веб-страницу в одном файле, а потом загрузить в power qwery, но так почему то были видны не все таблицы...

orfeusmilenium
Автор

Ещё один способ убрать столбцы пустые:

(tbl) =>
let
Headers = Table.ColumnNames(tbl),

Result = Table.SelectColumns(
tbl,
List.Select(Headers, each List.MatchesAny(Table.Column(tbl, _), each _ <> null)))
in
Result

grfqfkj
Автор

Добрый день Тимур. Заинтересовал метод с List.Accumulate, моё убеждение, и то, что прочитал в интернете, что можно найти суммы, max, min тоесть аккумулировать. Так же хотелось, чтобы Вы объяснили List.Generate.

grfqfkj
Автор

Видео хорошее. А как быть если пустых столбцов более 800

qhfryow
Автор

Спасибо. Вот еще задача - как удалить пустые столбцы ДО слияния файлов из папки? У меня в файлах столбцы с данными стоят в разных местах но есть код столбцов по которым я потом объединяю

vukin
Автор

Подскажите почему когда в способе 1 фильтруешь таблицу Table.Profile не по пользовательскому столбцу а по Columns ничего не получается?

qycymil
Автор

Удаление столбцов с помощью List.Accumulate:

(tbl) =>
let
Headers = Table.ColumnNames(tbl),

fnMyAccumulator =
(tbl as table, columnName as text) as table =>
if List.MatchesAll(Table.Column(tbl, columnName), each _ is null) then Table.RemoveColumns(tbl, {columnName}) else tbl,

myAccumulatedResult = List.Accumulate(
Headers,
tbl,
(tbl, columnName) => fnMyAccumulator(tbl, columnName))
in
myAccumulatedResult

grfqfkj
Автор

let
Источник = Excel.CurrentWorkbook(){[Name="John_Sales"]}[Content],
#"Пониженные заголовки" = Table.DemoteHeaders(Источник),
#"Транспонированная таблица" = Table.Transpose(#"Пониженные заголовки"),
#"Строки с применным фильтром" = таблица", each ([Column5] <> null)),
#"Транспонированная таблица1" = Table.Transpose(#"Строки с применным фильтром"),
#"Повышенные заголовки" = таблица1")
in
#"Повышенные заголовки"

irenedin