Очень нужна помощь в роде как довольно-таки простой задачи для PQ.
Есть вводные данные, имена, регион и сумма. Необходимо добавить к этой таблице "Возраст". Он есть по именам, а если имени нет в таблице нужно взять средний по регионам.
В столбце "Наличие" показано есть имя в списке или нет.
Пробовал через if [Наличие] = "Да" then Table.NestedJoin с именами, а if [Наличие] = "Нет" then Table.NestedJoin по региону. Но почему-то не получается, подклеивает несколько таблиц в одной строке.
Добрый день, помогите решить задачу в PQ Необходимо добавить столбец счёта, присвоить уникальный номер имени. При этом если имя повторяется должен стоять тот же номер, что и в первый раз напротив такого же имени.
Видимо, я не совсем корректно объяснил. Посмотрите , пожалуйста. Вот по- первому клиенту два развития событий, базовый и максимальный сценарий, если так, то должно быть две строки (базовый сценарий и ход развития и максимальный). В данном случае в базовом лишь одно мероприятие, в максимальном два. Возможно ли так ? или лучше сделать две разные таблицы ? \
[URL=#]?[/URL] 1 2 3 4 5 6 7 8 let Source = Excel.CurrentWorkbook(){[Name= "Таблица1" ]}[Content], a = Table.Group(Source, "Клиент" , { "q" , (x)=> [a = Table.AddColumn(x, "q" , (x)=> List.RemoveFirstN(Record.ToList(x), 2))[q], b = Table.FromList({{x[Клиент]{0}} & List.Combine(a)}, (x)=>x)][b]}), b = Table.Combine(a[q]) in b
Подскажите, а можно добавить столбец "Номер" к клеинту? Нужна группировка просто по двум сценариям, не понимаю как учесть это в этой строке : b = Table.FromList({{x[Клиент]{0}} & List.Combine(a)}, (x)=>x)][b]}),
Добрый день! Подскажите, позволяет ли Power Query делать кол-во столбцов исходя из повторяющихся значений у одного клиента?
То есть если было два событие, должно появится 2 столбца м1 и м2, если было 3 события - 3 столбца, м1, м2, м3 Может быть как-то через префикс и подсчёт значений в столбце...
Добрый день! Столкнулся , думаю, с весьма популярной задачей, однако на просторах интернета не удалось найти нужное решение.
Необходимо силами Power Query заполнить столбец вниз по категории. Есть клиент, по которому в один год начинается доход, нужно, чтобы дальше ниже по всем годам доход заполнился, однако, если в строках клиент поменялся заполнение остановилось.
Добрый день! Подскажите , пожалуйста, есть карта событий по разным клиентам, которая удобна в использовании. Для проверки нужно сделать таблицу, которая на листе "цель". Суть в том, что одна строка - один клиент, и информация по первому событию, если есть по второму, если есть по третьему. Если информации нет - просто пустые значения.
Подскажите, пожалуйста, как сделать индексацию у клиентов без учёта сценария в Power Query? То есть есть клиент, по нему есть два вариант развития (базовый и максимальный сценарий), необходимо добавить столбец с номером . То есть, если по клиенту две строки (базовый и максимальный сценарий), то номер должен дублироваться на две строки, а если клиент участвует только в одном сценарии, то только один раз. Получается индексация с учётом кол-во повторений в столбце.
Добрый день! Подскажите, пожалуйста, как можно ускорить два взаимосвязанных кода. Возможно, есть какие-то хитрые источники оптимизации. Источники - ссылка на запрос, там Table.Buffer в конце сделан. Кол-во строк в эксель файле (источнике) 107.000. , вес файла 20мб. Сейчас обновляются запросы весьма долго.
Код 1:
Код
let
Источник = #"подключение к файлу",
#"Строки с примененным
фильтром" = Table.SelectRows(Источник, each List.Contains(Список,
[#"Номер"])),
#"Переупорядоченные столбцы" =
Table.ReorderColumns(#"Строки с примененным фильтром",{"Сценарий",
"Номер", "Адрес", "Кластер",
"Регион", "Отделение", "Сегмент", "Год", "Событие", "Значение", "Значение2", "Дни"}),
#"Удаленные столбцы" =
Table.RemoveColumns(#"Переупорядоченные
столбцы",{"Кластер", "Отделение", "Значение2", "Дни"}),
#"Строки с примененным
фильтром1" = Table.SelectRows(#"Удаленные столбцы", each [Год]
>= 2022 ),
#"Несвернутые столбцы" =
Table.UnpivotOtherColumns(#"Строки с примененным фильтром1",
{"Сценарий", "Номер", "Адрес",
"Регион", "Сегмент", "Год"}, "Атрибут", "Значение"),
#"Объединенные запросы" =
Table.NestedJoin(#"Несвернутые
столбцы",{"Атрибут"},Сорт,{"Ячйека"},"Сорт",JoinKind.LeftOuter),
#"Развернутый элемент Сорт" =
Table.ExpandTableColumn(#"Объединенные запросы", "Сорт",
{"Номер"}, {"Номер"}),
#"Сортированные строки" =
Table.Sort(#"Развернутый элемент Сорт",{{"Номер",
Order.Ascending}, {"Год", Order.Ascending}}),
#"Объединенные столбцы" =
Table.CombineColumns(Table.TransformColumnTypes(#"Сортированные
строки", {{"Год", type text}},
"ru-RU"),{"Год", "Атрибут"},Combiner.CombineTextByDelimiter("
", QuoteStyle.None),"Сведено"),
#"Удаленные столбцы1" =
Table.RemoveColumns(#"Объединенные столбцы",{"Номер"}),
#"Сведенный столбец" =
Table.Pivot(#"Удаленные столбцы1", List.Distinct(#"Удаленные
столбцы1"[Сведено]), "Сведено", "Значение"),
in
#"Сведенный столбец"
Может быть общую логику оптимизации подскажите...
Код
let
Источник = #"подключение к файлу",
// Выбирается отчётный год
#"Строки с примененным
фильтром" = Table.SelectRows(Источник, each [Год] > 2022),
#"Другие удаленные столбцы" =
Table.SelectColumns(#"Строки с примененным фильтром",{"Номер", "Сценарий", "Год", "Событие"}),
//Замена
#"Замененное значение" =
Table.ReplaceValue(#"Другие удаленные
столбцы",null,"-",Replacer.ReplaceValue,{"Событие"}),
// Мэппинг событий
#"Объединенные запросы1" =
Table.NestedJoin(#"Замененное
значение",{"События"},мэпСобытий,{"События"},"мэпСобытий",JoinKind.LeftOuter),
#"Развернутый элемент
мэпСобытий" = Table.ExpandTableColumn(#"Объединенные
запросы1", "мэпСобытий", {"Признак новой"}, {"Признак новой"}),
// Фильтр на новых
#"Строки с примененным
фильтром1" = Table.SelectRows(#"Развернутый элемент
мэпСобытий", each ([Признак новой] = "да")),
#"Удаленные столбцы" =
Table.RemoveColumns(#"Строки с примененным
фильтром1",{"События", "Год", "Признак новой", "Сценарий"}),
// ОСоединение
#"Добавленный запрос" =
Table.Combine({#"Удаленные столбцы", #"Объекты на конец
отчетного периода"}),
#"Другие удаленные столбцы1" =
Table.SelectColumns(#"Добавленный запрос",{"Номер"}),
// Удаление дубликатов (двух сценариев)
#"Удаленные дубликаты" =
Table.Distinct(#"Другие удаленные столбцы1"),
#"Номер" =
#"Удаленные дубликаты"[#"Номер"],
// Преобразование в список
#"Обращенный список" =
List.Reverse(#"Номер")
in
#"Обращенный список"
Буду крайне признателен всем откликнувшимся экспертом, заранее огромное спасибо!
Обновление некоторых данных, если по ним вышло обновление через PowerQuery, Необходимо сравнить две таблицы, исходную и обновленную, если обновлённая таблица содержит изменения, взять их, если нет, оставить прежнюю.
Спасибо большое вам, то, что нужно! Единственное осталась последняя проблема, если изменения приходят по разным категориям, то получается null у некоторых клиентов вместо прошлых данных. Возможно ли это как-то решить?
Обновление некоторых данных, если по ним вышло обновление через PowerQuery, Необходимо сравнить две таблицы, исходную и обновленную, если обновлённая таблица содержит изменения, взять их, если нет, оставить прежнюю.
Спасибо! А подскажите, пожалуйста, если в корректировках будут лишь те строки, которые нужно обновить, а все остальные собственно надо оставить как есть, как тогда быть? Пример прилагаю, текущий код выдаёт ошибки
Обновление некоторых данных, если по ним вышло обновление через PowerQuery, Необходимо сравнить две таблицы, исходную и обновленную, если обновлённая таблица содержит изменения, взять их, если нет, оставить прежнюю.
Нет возможности обновить запрос. Есть выгрузка из запроса, раз в год. И потом выходят разные корректировки. Необходимо, чтобы одна строка заменялась другой. (то есть если появились новые данные - заменить строку, если нет - остается прежняя).
Пробую через фильтрацию и объединение , но пока как-то не получается
Обновление некоторых данных, если по ним вышло обновление через PowerQuery, Необходимо сравнить две таблицы, исходную и обновленную, если обновлённая таблица содержит изменения, взять их, если нет, оставить прежнюю.
Добрый день! Подскажите, пожалуйста, как обновить данные, если по ним вдруг вышло обновление? То есть , 1) необходимо проверить, нет ли обновления по данным, 2) если какие-то строки обновились, необходимо прежние данные заменить на актуальные, а если нет, то старые обязательно оставить в прежнем виде. Пример файла прилагаю. На первом листе - выгрузка данных. Через какое-то время пришло обновление по прежним данным (абсолютно рандомные изменения могут быть), вопрос: как прописать таким образом, чтобы PQ проверял обновления по всем строкам.
С кодом вообще почти не работал, с Power Query все делал в основном через банальные выборы, "руками", настраиваемый столбец, группировки и тд
Я так понимаю, что для сложения можно использовать List.Sum ? с вычитанием и делением уже так не получится ? Огромное вам спасибо за содействие, правда!
Спасибо! А подскажите пожалуйста, возможно ли это сделать через параметр и функцию? И если заменять умножение сложением, как поменяется код? Заранее спасибо
Здравствуйте! Подскажите пожалуйста, есть две таблицы (100х100). В каждой ячейке число. Как с помощью Power Query (именно его) сделать слияние в третью таблицу, чтобы все числа перемножились. Заранее спасибо!