Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 След.
Сделать сводную по годам в PQ
 
NV.Telegin, формулы у Вас ровно такие же, русские - названия шагов, на работу запроса это не влияет.
DAX Power BI Ошибка "Недостаточно памяти для завершения операции" при вставке формулы столбца
 
Цитата
PooHkrd написал:
Я в книжку (Гайд ту дакс) от итальянцев только вот начал вгрызаться
Цитата
PooHkrd написал:
Использовать EARLIER чтобы выглянуть за пределы текущего контекста, или тупо запомнить его в переменную и её уже использовать уже в CALCULATE?
Вопрос по свежепрочитанному, так что влезу с ответом :)  Итальянцы пишут, что с появлением переменных необходимость в EARLIER отпала:

Цитата
There are no further reasons to use EARLIER in newer DAX code because variables are a better way to save the required value when the right row context is accessible. Using variables for this purpose is a best practise and results in more readable code.
Т.е. насчёт производительности можно сделать вывод, что она у переменных точно не хуже EARLIER.
Изменено: Aleksei_Zhigulin - 22 авг 2020 12:53:11
PQ.Автоматическое добавление новых столбцов в расчет
 
Цитата
Student64 написал:
хотелось что то побыстрее pivot / unpivot
Если скорость - проблема, тогда, как и предложил PooHkrd, лучше уж в Power Pivot.
PQ.Автоматическое добавление новых столбцов в расчет
 
Student64, по старинке:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    unpivot = Table.UnpivotOtherColumns(Source, {"Клиент"}, "Атрибут", "Сумма"),
    split = Table.SplitColumn(unpivot, "Атрибут", (x)=>let a = if Text.StartsWith(x,"Д") then "Доход" else "Расход" in {a, Text.Split(x,a){1}}, {"Тип", "Продукт"}),
    pivot = Table.Pivot(split, List.Distinct(split[Тип]), "Тип", "Сумма"),
    replace = Table.ReplaceValue(pivot,null,0,Replacer.ReplaceValue,{"Доход","Расход"}),
    add = Table.AddColumn(replace, "Доход - Расход", each List.Sum({[Доход],[Расход]})),
    add1 = Table.AddColumn(add, "Расход/Доход", each [Расход]/[Доход]),
    unpivot1 = Table.UnpivotOtherColumns(add1, {"Клиент", "Продукт"}, "Атрибут", "Сумма"),
    merge = Table.CombineColumns(unpivot1,{"Атрибут","Продукт"},Text.Combine,"temp"),
    pivot1 = Table.Pivot(merge, List.Distinct(merge[temp]), "temp", "Сумма")
in
    pivot1
Порядок столбцов другой, но, возможно, так даже сподручней.
Развернуть один столбец в несколько в PQ, Речь именно про Power Query
 
Light-XP, примерно так:
Код
let
    Source = Record.ToTable([name1={[a="aa1",c="cc1",z="zz1"],[a="aa2",c="cc2",z="zz2"],[a="aa3",c="cc3",z="zz3"]},
                             name2={[a="aa3",c="cc3",z="zz3"]},
                             name3={[a="aa1",c="cc1",z="zz1"],[a="aa3",c="cc3",z="zz3"]}]),
    n=1, //заранее известный порядковый номер искомого поля в записи (нумерация с нуля)
    transform = Table.TransformColumns(Source, {"Value", each Table.Transpose(Table.FromRecords(_)){n}}),
    expand = Table.ExpandRecordColumn(transform, "Value", List.Union(List.Transform(transform[Value], Record.FieldNames)))
in
    expand
импорт только отфильтрованных строк таблицы в запросе Powre Query
 
Shikamaru, вот, уже лучше  :)  По сути, Вы говорите о параметрах запроса. Один из способов реализации - таблица параметров. Почитать можно, например, здесь. Сайт почему-то сейчас не работает, потому ссылка на кэш Google.
импорт только отфильтрованных строк таблицы в запросе Powre Query
 
Shikamaru, ну ИМХО, получать разные результаты в запросе, если кто-то добавил в таблице фильтр, было бы куда менее приятно. Но вкусы у людей разные, это я понимаю :)  
импорт только отфильтрованных строк таблицы в запросе Powre Query
 
Shikamaru, так ведь срез не для того предназначается, чтобы ограничивать получаемые PQ данные. Да и если Вы просто сделаете фильтр в таблице, в PQ подтянутся все данные, не только отфильтрованные. И это хорошо.
Расчет разницы между датами из одной колонки в Power Query, Описание приемов и способов поиска минимальной и максимальной даты с последующим определением разницы в месяцах
 
Цитата
PooHkrd написал:
итератор в AddColumns как-то иначе работает чем в остальных функциях
Да, по-моему, на форуме уже поднималась эта тема, потому и запомнилось. Спасибо!
Расчет разницы между датами из одной колонки в Power Query, Описание приемов и способов поиска минимальной и максимальной даты с последующим определением разницы в месяцах
 
PooHkrd, моя вторая конструкция с вопросом провисела всего пару минут, но Вы таки успели на него ответить  :D

Возможно, Вы правы, и List.Buffer действительно ускоряет быстродействие. Но в мою картину мира это пока не укладывается  :) .  Прогнал на миллионе строк - оба запроса обновляются одинаковое время (~ 20 сек.). Правда, проверял на числах, а не датах.
Код
= Table.AddColumn(types, "aaa", let a = types[Столбец2] in each List.Max(a) - List.Min(a))
Код
= Table.AddColumn(types, "aaa", let a = List.Buffer(types[Столбец2]), b = List.Max(a), c = List.Min(a) in each b - c)

Это наводит на крамольные мысли, что лист a запоминается один раз, а не пересчитывается в каждой строке.
Расчет разницы между датами из одной колонки в Power Query, Описание приемов и способов поиска минимальной и максимальной даты с последующим определением разницы в месяцах
 
PooHkrd, точно, спасибо! Порядок each упустил из виду. Вот эту встроенную конструкцию неправильно вспомнил:
Код
= Table.SelectRows(Source, let earliest = List.Min(Source[Col1]) in each [Col1] = earliest)
Изменено: Aleksei_Zhigulin - 28 май 2020 14:42:01
Расчет разницы между датами из одной колонки в Power Query, Описание приемов и способов поиска минимальной и максимальной даты с последующим определением разницы в месяцах
 
PooHkrd, доброго дня,

Довольно редко сталкиваюсь с необходимостью оптимизировать быстродействие запросов, но разве List.Buffer здесь что-то ускоряет? Мне казалось, что при конструкции let a = list in List.Max(a) - List.Min(a) движок будет обращаться к списку a только один раз, неважно, сколько раз этот список будет встречаться в выражении in.
Расчет разницы между датами из одной колонки в Power Query, Описание приемов и способов поиска минимальной и максимальной даты с последующим определением разницы в месяцах
 
Георгий Шкуро, грубо:
Код
add = Table.AddColumn(YourTable, "diff", each let a = YourTable[DatesColumn] in Number.RoundDown(Number.From((List.Max(a) - List.Min(a))/30)))
Power Query / перенос и транспонирование даты из названия столбца в шаблоне-таблице, Ошибка при преобразовании транспонированных столбцов с датой, загрузка в функцию
 
Kerel, PQ Вам намекает, что столбца "янв.20" в Вашем файле нет. Раз уж Вы хотите сделать "функцию-шаблон", рискну предположить, что месяц и год в Ваших исходных данных будут меняться с течением времени. Соответственно, в коде Вашей функции следует избежать упоминания столбцов, название которых постоянно меняется (как это происходит в шагах #"Измененный тип1" и #"Удаленные столбцы"), либо менять имена таких столбцов динамически, в зависимости от месяца/года.
PP. Проблема группировки в сводной таблице выгруженной из Power Pivot
 
Цитата
OblivionR написал:
Зачем? Если эти манипуляцию нужно проделывать в теле сводника.
Группировка в сводной PP не работает, поэтому Вам придётся сделать это самостоятельно. Если условие группировки простое - достаточно создать вычисляемый столбец, затем вывести его в сводной. В противном случае, как верно отметил genosser, нужно создать дополнительную таблицу, с группами, которые Вы хотите получить. Затем добавить её в модель данных напрямую, связав с основной таблицей, либо опосредованно через PQ.
Преобразование сводной таблицы в обычную с помощью Power Query: Загрузка завершилась с ошибкой.
 
dabustard, самый быстрый способ - удалить второй шаг.
Power Query. Брать в дате только определённые дни и по ним составить список, есть дата начала и конца,
 
Цитата
AlexMakarov написал:
У меня вопрос, а обязательно создавать таблицу? Попробовал этот запрос на "подключении" и ошибка в синтаксисе.
Нет, не обязательно. Если у Вас ошибка в синтаксисе, вероятнее всего, одно из двух: либо Ваша таблица / столбцы называются как-то иначе, либо Вы не в полном объёме вставили код в расширенный редактор.
Изменено: Aleksei_Zhigulin - 6 фев 2020 17:02:49
Power Query. Брать в дате только определённые дни и по ним составить список, есть дата начала и конца,
 
Ещё вариант:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    types = Table.TransformColumnTypes(Source,{{"Начало", type date}, {"Окончание", type date}, {"По каким дням недели", type text}, {"Номер", type text}}),
    add = Table.AddColumn(types, "list", each let a = List.Transform(Text.ToList([По каким дням недели]),Number.From)
                                               in List.RemoveNulls(
                                                                    List.TransformMany(List.Dates([Начало],Number.From([Окончание]-[Начало])+1,#duration(1,0,0,0)),
                                                                                       (x)=>{Date.DayOfWeek(x)},
                                                                                       (x,y)=>if List.Contains(a,y+1) then x else null)))
in
    add
Изменено: Aleksei_Zhigulin - 5 фев 2020 18:37:33
PQ. Настраиваемый столбец. Проверка текстового формата в столбце
 
Добрый день!

Ну, главное, что ТС всё устроило :)
Цитата
ivanka написал:
Благодарю!  
PQ. Настраиваемый столбец. Проверка текстового формата в столбце
 
Или как-то так:
Код
= Table.AddColumn(Источник, "test", each let x = [Столбец А] in Number.From(not ((try Number.From(x) otherwise x) is number)))
PQ. Настраиваемый столбец. Проверка текстового формата в столбце
 
PooHkrd, в таком виде не сработает для чисел, надо через Number.From. Если я верно понял задачу, конечно.
Изменено: Aleksei_Zhigulin - 21 янв 2020 18:36:13
Power querry задваивает данные после применения фильтра в источнике
 
fireinthehole, зачем Excel создаёт _xlnm._FilterDatabase научно я Вам не объясню. Да это и не сильно важно в данном контексте. Достаточно понимать, что PQ может забирать из файла Excel различные сущности (лист, таблица, имя). Как раз именем (скрытым) и является _xlnm._FilterDatabase в Вашем файле (см. столбец Kind в шаге Источник). Соответственно, если Вам нужны только данные с Листа1, то надёжнее будет забирать их таким образом:
Код
= Источник{[Item="Лист1",Kind="Sheet"]}[Data]
То есть если в книге Источник появятся имена, таблицы или другие листы - это не повлияет на результат запроса.
Изменено: Aleksei_Zhigulin - 21 янв 2020 17:45:45
Power querry задваивает данные после применения фильтра в источнике
 
fireinthehole, правильно, что задваиваются - Вы не отфильтровали _xlnm._FilterDatabase.
Изменено: Aleksei_Zhigulin - 21 янв 2020 12:01:11
Таблица дат в Power Pivot
 
vector1, или так:
PQ. Разделить текст на строки
 
artyrH, вот в этой теме публиковал картинку, которая позволяет понять, что такое a, b, c. А дальше просто описываем, что мы хотим сделать с каждым значением в столбце "РД" (т.е. a) - найти список чисел между разделителями и оставить между разделителями только по одному числу из списка.
PQ. Разделить текст на строки
 
Ещё вариант:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица4"]}[Content],
    replace = Table.ReplaceValue(Source,0,0,(a,b,c)=>let x = Text.BetweenDelimiters(a,"(", ")"), y = Text.Split(a, x) in List.Transform(Text.Split(x, ", "), each y{0}&_&y{1}),{"РД"}),
    expand = Table.ExpandListColumn(replace, "РД")
in
    expand
PQ как вытащить значение из другого запроса в текущий, функция для извлечения значения из другого запроса и подстановки его в текущий
 
saejin, т.к. файла примера нет - общие рекомендации. Вы можете получить данные промежуточных шагов запроса, например, используя метаданные. Т.е. в искомом запросе добавляете шаг вроде такого:
Код
result = ИмяПоследнегоШага meta [ЛюбоеГоворящееИмя = ИмяПромежуточногоШага]

Затем в другом запросе можете получить данные этого промежуточного шага следующим образом:

Код
 Source = Value.Metadata(ИмяЗапроса)[ЛюбоеГоворящееИмя]
Как разбить строки по признаку
 
Shantin, вариант в PQ:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    group = Table.Group(Source, {"Дата"}, {"temp", each #table({"Дата"},{{null}}) & _}),
    combine = Table.Skip(Table.Combine(group[temp]),1)
in
    combine
Преобразовать данные Power Query для сводной таблицы
 
Николай Савенко, функция Максима Зеленского Вам в помощь (для работы с уровнями группировок):

https://github.com/hohlick/Power-Query-Excel-Formats/blob/master/RowsOutline/ExcelWorksheetsRowOutlines.pq
Изменено: Aleksei_Zhigulin - 26 ноя 2019 19:40:45
Как разбить данные одного столбца на два в Power Query
 
Андрей Лящук, спасибо за 3 аргумент Table.SplitColumn. Давно собирался с ним поковыряться, найти альтернативу дефолтным сплиттерам, так и не собрался. Свои 5 копеек:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    split = Table.SplitColumn(Source, "Производитель/код", (x)=>let a = try Number.From(x) otherwise null
                                                                in {if a = null then x else null, a},
                                                           {"Производитель", "Код"})
in
    split
Изменено: Aleksei_Zhigulin - 24 ноя 2019 03:17:20
Страницы: 1 2 3 4 5 6 7 8 След.
Наверх