XYZ анализ и немного математики #АнатомияФункций – статистические функции Всем привет! В продолжение разговоров про ABC-анализ в чат подкину ли задачку на проведение XYZ-анализа. Сложность – таблица фактов содержит только факты, т.е. НЕ содержит дней, в которых не было продаж. Ну и решение через дополнение таблицы фактов строками с нулевыми значениями (чтобы адекватно работали List.Average и List.StandardDeviation) немножко тупило. По этому поводу код: let f=(x)=>[gr=List.Buffer(Table.Group(x,"d...
Для тех, кто в танке
Канал создан для себя, обсуждаем вопросы использования языка M и шарим всякие полезные ссылки. На вопросы отвечаем в комментах и тут - t.me/pbi_pq_from_tank_chat Для желающих поддержать канал - https://sponsr.ru/pq_m_buchlotnik/
Графики
📊 Средний охват постов
📉 ERR % по дням
📋 Публикации по дням
📎 Типы контента
Лучшие публикации
20 из 20Говорили, что M — это слишком узкая ниша? #АнатомияФункций – курс по языку M Сегодня я держу в руках «Лису» — специальную награду от Sponsr. Ее дают за особые успехи на платформе. Тот факт, что сугубо технический проект по Power Query получил этот статус, говорит об одном: тема актуальна, а качественные знания всегда находят свою аудиторию. Изначально задумывал проект не как набор «фишек» и «вау-эффектов», а именно как сочетание теории и практики. Разбор ЛОГИКИ решений, которые реально работают ...
Курс — Power Query язык М — 202 — Списки — Сбор нескольких, очистка #АнатомияФункций – курс по языку M Всем привет! Продолжаем ежемесячные публикации в течение учебного года. Сегодня на повестке списки, а именно - combine, select, ну и до кучи difference, union и intersect. Смотрим на ютубе, рутубе, ну а первоисточник с исходниками, как всегда, на спонсоре Надеюсь, будет полезно Всех благ! @buchlotnik
Магия List.Zip или свёртка числовой последовательности #АнатомияФункций – List.Zip Всем привет! В чат подкинули задачку по превращению текста вот такой последовательности: "1,2,4,5,7,10,12,22,23,24,25" вот в такую: "1,2,4,5,7,10,12,22...25" Обратная задача решается элементарно, но вот прямая… Родился вот такой вариант: f=(txt)=>[ a = List.Buffer(List.Transform(Text.Split(txt,","),Number.From)), b = List.Zip({{null}&List.RemoveLastN(a),a,List.Skip(a)}), c = List.Buffer(List.Transform(b,(x)=>if x{...
Генератор со словарём внутри локальной группировки #АнатомияФункций – List.Generate Всем привет! В чат подкинули задачку, на этот раз про статусы, добавление строк и прочие радости. По этому поводу родился код: let g=(x,y)=>{x&[status="lost",service=null,unit=null,period=y]}, f=(x)=>[lst = List.Buffer(Table.ToRecords(x)), n = List.Count(lst), sd = lst{0}[period], fd = Date.AddYears(List.Last(lst)[period],1), gen = List.Generate( ()=>[i=0,r=lst{i},d=sd,rd=null,l=Record.FromList({""},{r[service]})...
Производственный календарь 3 #АнатомияФункций – CustomFunctions Всем привет! В преддверии Нового Года решил ещё раз поднять тему производственных календарей (предыдущая итерация). По этому поводу код: (optional year as number)=>[ year = Text.From(if year=null then Date.Year(DateTime.LocalNow()) else year), from = Web.Contents("http://www.consultant.ru/law/ref/calendar/proizvodstvennye/"&(if year="2020" then "2020b" else year)), html = Html.Table(from,{ {"m","th.month"}, {"d","td",(x)=>Text.Remov...
Курс — Power Query язык М — 505 — Файлы и папки — Folder.Contents #АнатомияФункций – курс по языку M Всем привет! Продолжаем ежемесячные публикации в течение учебного года. Сегодня на повестке Folder.Contents – она как Folder.Files, просто позволяет тянуть файлы не вообще, а из корневой папки или, наоборот, из конкретных подпапок. Смотрим на ютубе, рутубе, ну а первоисточник с исходниками, как всегда, на спонсоре Надеюсь, будет полезно Всех благ! @buchlotnik
Курс — Power Query язык М — 303 — Таблицы — Преобразование столбцов #АнатомияФункций – курс по языку M Всем привет! Продолжаем ежемесячные публикации в течение учебного года. Сегодня на повестке таблицы, а именно - преобразование столбца, нескольких столбцов, всех столбцов, всех столбцов кроме... надеюсь, мысль понятна. Смотрим на ютубе, рутубе, ну а первоисточник с исходниками, как всегда, на спонсоре Надеюсь, будет полезно Всех благ! @buchlotnik
TablePack или решаем задачу об упаковке #АнатомияФункций – custom functions Всем привет! В чат подкинули задачку то ли по упаковке, то ли по распределению. По этому поводу родился код, который я радостно сложил на гитхаб [f=(tbl,val,attr,nom,alg)=> let core=(tbl,val,attr,nom,mode,online,alg)=>[ min=(x,y)=>List.PositionOf(x,List.Min(x)), first=(x,y)=>List.PositionOf(x,y{1},Occurrence.First,(c,v)=>c+v<=nom), best=(x,y)=>List.PositionOf(x,List.Max(List.Select(x,(x)=>x+y{1}<=nom))), next=(x,y)=>if x...
Table.Group vs Table.Distinct с индексами #АнатомияФункций – Table.Group Всем привет! В чат подкинули задачку с просьбой оптимизации – там был Distinct, сплиттеры, комбайнеры, индексы, но по итогу оказалось достаточно просто: let f=(x)=>x{0}&[В=List.Last(x[Ячейка])], from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], gr = Table.Group(from,{"Дата","lsk_LogID"},{"tmp",f},GroupKind.Local), to = Table.FromRecords(gr[tmp]) in to или даже let from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[...