Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Удалить значения определенных столбцов таблицы, оставив заголовки в Power Query, удалить значения столбцов
 
Здравствуйте! Подскажите, как удалить значения определенных столбцов в таблице, оставив заголовки этих столбцов в PowerQuery? Почему то удаляет не значения, а весь столбец. Пытался через "заменить значения" в столбце , но функция "*" не поддерживается в PQ как в ctrl+h....
В примере мне нужно оставить значения в зеленых столбцах и удалить значения во всех остальных, при этом оставив их очередность
 
Так надо?
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    СохраненныеПервыеСтроки = Table.FirstN(Источник,0),
    ДругиеУдаленныеСтолбцы = Table.SelectColumns(Источник,{"Наименование", "Наименование артикула", "Код артикула", "Цена", "Закупочная цена", "В наличии", "Ссылка на витрину", "Бренд", "Штрих-код", "Артикул производителя"}),
    ДобавленныйЗапрос = Table.Combine({СохраненныеПервыеСтроки, ДругиеУдаленныеСтолбцы})
in
    ДобавленныйЗапрос
Вот горшок пустой, он предмет простой...
 
еще как вариант - текст после несуществующего разделителя что-то типа "+++"
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Извлеченный текст после разделителя" = Table.TransformColumns(Источник, {{"Валюта", each Text.AfterDelimiter(_, "+++"), type text}, {"Доступен для заказа", each Text.AfterDelimiter(Text.From(_, "ru-RU"), "+++"), type text}, {"Зачеркнутая цена", each Text.AfterDelimiter(Text.From(_, "ru-RU"), "+++"), type text}})
in
    #"Извлеченный текст после разделителя"
 
Или как-то так:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    list = {"Наименование", "Наименование артикула", "Код артикула", "Цена", "Закупочная цена", "В наличии", "Ссылка на витрину", "Бренд", "Штрих-код", "Артикул производителя"},
    list_null = List.Difference(Table.ColumnNames(Source),list),
    list_zip = List.Zip({list_null, List.Repeat({each null}, List.Count(list_null))}),
    transform = Table.TransformColumns(Source, list_zip)
in
    transform
 
Я бы сделал так..
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    Step_01 = Table.ReplaceValue(Source, null, null, (a, b, c) => null, {"Код артикула", "Краткое описание", "Теги", "Ссылка на витрину"})
in
    Step_01

Список столбцов отредактировать по усмотрению (я привел в примере произвольные).

Как вариант, оставить значения только в нужных столбцах, в остальных стереть:
Код
let
   List = {"Наименование", "Наименование артикула"},
   Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
   Step_01 = Table.ReplaceValue(Source, null, null, (a, b, c) => null, List.RemoveItems(Table.ColumnNames(Source), List))
in
   Step_01

Этот вариант имхо один из самых коротких, но вариант от PooHkrd мне больше нравится так как на больших таблицах он будет быстрее. На маленьких, наверное, нет разницы какой способ использовать.
Изменено: Alexey_Spb - 14 Янв 2019 18:44:05
 
PooHkrd, отличный вариант. Я, к примеру, вообще забыл про Table.FirstN(Источник, 0) - сделал через #table(Table.ColumnNames(Source),{})
F1 творит чудеса
 
Максим Зеленский, да тут все красавцы! Почти избушка формулистов PQ получилась :D , вот только ТС куда-то пропал.
Вот горшок пустой, он предмет простой...
 
Отлично! А где то тут на сайте эта "избушка" PowerQuery есть? Мне в PQ очень даже понравилось...охота развиваться в эту сторону :)
В любом случае, спасибо всем!
 
rafa_el, отдельной нет пока :)
F1 творит чудеса
 
Предлагаю модераторам ее сделать  :)

Можно даже из этой темы
 
Сами делайте, стройматериалы у вас.
Страницы: 1
Читают тему (гостей: 2)
Наверх