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

Страницы: 1 2 3 4 5 6 7 След.
Удаление дубликатов из 5 столбцов, После выгрузки контактов в Excel необходимо избавиться от дублей номеров, которые добавили мессенджеры
 
Или лучше так:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица15"]}[Content],
    func = (x,y) => Text.Combine(List.Transform(List.Distinct({x,y}), Text.From),";"),
    add = Table.AddColumn(Source, "temp", each [#"1+2" = func([1],[2]), #"3+4" = func([3],[4])]),
    expand = Table.ExpandRecordColumn(add, "temp", {"1+2", "3+4"}),
    final = Table.SelectColumns(expand,{"NN", "1+2", "3+4", "Комм."})
in
    final
Удаление дубликатов из 5 столбцов, После выгрузки контактов в Excel необходимо избавиться от дублей номеров, которые добавили мессенджеры
 
olegMir, для этого нужен другой подход. Вариант ниже (группы заданы вручную):
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица15"]}[Content],
    group = Table.Group(Source, {"NN", "Комм."}, {"temp", each [a = (x,y) =>Text.Combine(List.Transform(List.Union({x,y}), Text.From),";"), b = a([1],[2]), c = a([3],[4])]}),
    expand = Table.ExpandRecordColumn(group, "temp", {"b", "c"}, {"1+2", "3+4"}),
    reorder = Table.ReorderColumns(expand,{"NN", "1+2", "3+4", "Комм."})
in
    reorder
Изменено: Aleksei_Zhigulin - 16 Сен 2019 14:57:37
Точка перед большой буквой
 
Как-то так:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    list = List.Transform({"А".."Я","Ё","A".."Z","0".."9"}, each " "&_),
    replace = Table.ReplaceValue(Source, 0, (z)=> List.Sort(List.Union(List.Transform(list, each Text.PositionOf(z[Столбец1], _, 2))), 1),
                                            (a,b,c)=> List.Accumulate(c, a, (x,y)=> Text.Insert(x,y,".")), {"Столбец1"})
in
    replace
PowerPivot, PowerQuery, PowerBI
 
Андрей VG, спасибо! Значит, нет смысла перечитывать.
PowerPivot, PowerQuery, PowerBI
 
Максим Зеленский, спасибо!

Про февральскую версию тоже не знал, думал, с 2017 года не было обновлений.
PowerPivot, PowerQuery, PowerBI
 
Только что заметил, обновилась спецификация языка M (25.07.2019):

https://docs.microsoft.com/en-us/powerquery-m/power-query-m-language-specification

Интересно, что нового.
Изменено: Aleksei_Zhigulin - 15 Авг 2019 16:26:57
Ошибка при вызове функции в PQ
 
inженер, тип данных должен быть текст. Сделайте так:
Код
#"01.07.2919_Sheet" = Источник{[Item=Text.From(ЗаСутки),Kind="Sheet"]}[Data],
Почему Power Query не распознает дату?, В конкретном файле в одной конкретной ячейке Power Query не распознает дату как дату
 
Борис13, я лишь внёс минимальные правки в запрос, чтобы он у Вас заработал (добавил шаг transform и перенёс шаг преобразования типов в конец). Но, по-хорошему, лучше устранить причины, чем бороться с последствиями. Для этого достаточно посмотреть на код:

Как видно из скрина № 1, к столбцу был применён некорректный тип данных (должен быть текст), т.е. не стоит слепо полагаться на автоматическое проставление типов столбцов.

Интереснее в Вашем примере (на мой взгляд), что некорректный тип столбца (правда, десятичное, а не целое число) был уже на этапе загрузки таблицы (скрин № 2). Вообще, можно заметить, что для каждого столбца уже определён тип данных (что нехарактерно для запроса PQ к книге Excel). Какой-то проблемой, впрочем, это не является - всегда можно задать тип данных вручную. Причина, как выяснилось, в том, что запрос происходит к двоичной книге Excel. Вообще, когда это возможно, лучше в качестве источника данных для запросов PQ использовать файлы .xlsx вместо .xlsb.

Изменено: Aleksei_Zhigulin - 9 Авг 2019 19:16:42
Почему Power Query не распознает дату?, В конкретном файле в одной конкретной ячейке Power Query не распознает дату как дату
 
Борис13, добрый день, слегка изменил код, проверяйте.
Преобразование таблицы с выборкой и удалением дубликатов
 
Доброго времени суток, до кучи:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    group = Table.Group(Source, {"Глав. Ст."}, {{"temp", each Table.Transpose(_){1}}, {"cnt", Table.RowCount}}),
    func = (x)=> List.Transform({1..List.Max(group[cnt])}, each x & Text.From(_)),
    expand = Table.ExpandRecordColumn(Table.RemoveColumns(group,{"cnt"}), "temp", func("Column"), func("инд."))
in
    expand
Создание пустых строк Между заполненными (в таблице), Нужно создать пустые строки между заполненными (в таблице). Количество Необходимых строк - прописано в столбце
 
Вариант в Power Query:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    cols = Table.ColumnNames(Source),
    table1 = Table.AddIndexColumn(Source, "i", 0, 1),
    nulls = Table.AddColumn(table1, "nulls", each Table.Repeat(#table(cols, {List.Repeat({null},List.Count(cols))}), [Строк])),
    table2 = Table.ExpandTableColumn(Table.SelectColumns(nulls,{"nulls", "i"}), "nulls", cols),
    final = Table.Sort(table1 & table2, {"i", 0})
in
    final
Как из текста-каши получить первое русское слово
 
Андрей VG, добрый день! Спасибо :) Мне как-то комфортнее для восприятия синтаксис записей, чем вложенный let .. in. Редкий случай, когда syntax sugar менее лаконичен, чем вариант "без сахара" :)
Как из текста-каши получить первое русское слово
 
Вариант в PQ:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table"]}[Content],
    add = Table.AddColumn(Source, "first_word", each [x = Text.Split([Text], " "),
                                                      y = List.Select(x, each List.ContainsAll({"ё","а".."я"}, Text.ToList(_), Comparer.OrdinalIgnoreCase)){0}?]
                                                     [y])
in
    add
Изменено: Aleksei_Zhigulin - 13 Июл 2019 23:56:39
Разделить и разнести данные таблицы по общему разделителю в Power Query
 
artyrH, нет-нет, с кодом всё нормально, просто мне больше нравилось, как он выглядел без необходимости преобразования первого столбца :)  Соответственно, прикрутил трансформацию первого столбца уже поверх сделанного (шаги split и merge1). Будь я внимательнее и пойми условия задачи сразу, вероятно, решением могло быть иным.
Разделить и разнести данные таблицы по общему разделителю в Power Query
 
Уже постфактум заметил, что первый столбец тоже надо трансформировать, получилось не оптимально:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    split = Table.SplitColumn(Source, "Модель", Splitter.SplitTextByEachDelimiter({"*"}), {"Модель", "name"}),
    cols = List.Skip(Table.ColumnNames(split)),
    transform = Table.TransformColumns(split, List.Zip({cols, List.Repeat({each try Text.Split(_, "/") otherwise {_}}, List.Count(cols))})),
    merge = Table.CombineColumns(transform, cols, each Table.FillDown(Table.FromColumns(_, cols), cols), "temp"),
    expand = Table.ExpandTableColumn(merge, "temp", cols),
    merge1 = Table.CombineColumns(expand,{"Модель", "name"},Combiner.CombineTextByDelimiter("*"),"Модель"),
    types = Table.TransformColumnTypes(merge1, List.Transform(List.Skip(cols), each {_, type number}))
in
    types
Привести все столбцы к 2-м столбцам
 
Ellenka89, подобная задача недавно решалась средствами PQ:
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=117902&TITLE_SEO=117902-v-stolbtsakh-svedeniya-pq-poluchaetsya-odno-i-tozhe-chislo
Изменено: Aleksei_Zhigulin - 9 Июл 2019 13:23:30
Сортировка многоуровнего списка в PQ
 
На случай, если список нужно перенумеровать заново:
https://social.technet.microsoft.com/Forums/en-US/0d7620e1-46a3-4b6e-8ccd-b01d86aa9b07/dynamicly-renumber-heirarchal-numerical-titles
В столбцах сведения PQ получается одно и тоже число
 
Ещё вариант, до кучи:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    cols = List.Buffer(Table.ColumnNames(Source)),
    types = Table.TransformColumnTypes(Source, List.Transform(cols, each {_, type number})),
    i = Table.AddIndexColumn(types, "i", 0, 1),
    func = (list, label) =>
    [a = Table.SelectColumns(i, list),
     b =  Table.UnpivotOtherColumns(a, {"i"}, "Изделие", label),
     c = Table.TransformColumns(b, {"Изделие", each Text.AfterDelimiter(_, " ", {0, 1})})][c],
    table1 = func(List.Alternate(cols,1,1)&{"i"}, "Сумма"),
    table2 = func(List.Alternate(cols,1,1,1)&{"i"}, "Срок"),
    join = Table.Join(table1,{"i", "Изделие"},table2,{"i", "Изделие"})
in
    join

Понятно, что Table.Join использовать опасно (если не заполнена только сумма или срок - потеряем всю строку), но конкретно для данного датасета отрабатывает корректно.
В Power Query определить номер строки у каждой группы значений
 
SuperCat, да, конечно:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    group = Table.Group(Source, {"ID"}, {"temp", each Table.AddIndexColumn(_,"row",1,1)}),
    expand = Table.ExpandTableColumn(group, "temp", {"row"})
in
    expand
Изменено: Aleksei_Zhigulin - 18 Май 2019 11:40:08
PQ: Как свернуть номера в диапазоны по условию, Список номеров свернуть в диапазоны при двух условиях
 
Вариант PooHkrd самый оптимальный ИМХО. Вот вариант через группировки (одной обойтись не получилось):
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    group = Table.Group(Source, {"Код", "Статус", "Номер"}, {{"temp", each _}, {"rowCount", Table.RowCount}}, 0, (a,b)=> Number.From(if b[Код]=a[Код] and b[Статус]=a[Статус] then b[Номер]<>a[Номер]+1 else true)),
    group1 = Table.Group(group, {"Код", "Статус", "Номер", "rowCount"}, {{"min", each List.Min(Table.Combine([temp])[Номер])}, {"max", each List.Max(Table.Combine([temp])[Номер])}, {"count", each List.Count(Table.Combine([temp])[Номер])}}, 0, (a,b)=> Number.From(if b[Код]=a[Код] and b[Статус]=a[Статус] then b[Номер]<>a[Номер]+a[rowCount] else true)),
    final = Table.SelectColumns(group1,{"Код", "min", "max", "count", "Статус"})
in
    final
PQ: Как свернуть номера в диапазоны по условию, Список номеров свернуть в диапазоны при двух условиях
 
mtts54, так?
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    group = Table.Group(Source, {"Код", "Статус"}, {{"min", each List.Min([Номер])}, {"max", each List.Max([Номер])}, {"count", each List.Count([Номер])}}, 0),
    reorder = Table.ReorderColumns(group,{"Код", "min", "max", "count", "Статус"})
in
    reorder
PQ в столбце заменить любое значение по условию в другом столбце
 
Ещё вариант (по мотивам решения Alexey_Spb):
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Столбец1", type text}, {"Столбец2", Int64.Type}}),
    #"Замененное значение" = Table.ReplaceValue(#"Changed Type", each [Столбец1], null, (a,b,c) => if b=c then c else a,{"Столбец2"})
in
    #"Замененное значение"
Изменено: Aleksei_Zhigulin - 6 Май 2019 18:08:29
Как разделить текст при первой заглавной букве?
 
Попробуйте ещё раз, код рабочий.
Как разделить текст при первой заглавной букве?
 
CainV,
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    position = Table.AddColumn(Source, "position", each List.PositionOfAny(List.Skip(Text.ToList([Наименование])),List.Transform({0..9},Text.From)&{"А".."Я","A".."Z"})),
    part1 = Table.AddColumn(position, "part1", each if [position]<0 then [Наименование] else Text.Start([Наименование], [position])),
    part2 = Table.AddColumn(part1, "part2", each if [position]<0 then null else Text.Trim(Text.Middle([Наименование], [position]))),
    final = Table.SelectColumns(part2,{"Наименование", "part1", "part2"})
in
    final
Изменено: Aleksei_Zhigulin - 29 Апр 2019 14:48:37
Как разделить текст при первой заглавной букве?
 
CainV, приложите файл, пожалуйста, чтобы сподручней было.
Power Query - Создать столбец дат по условию начало и конца периода
 
Цитата
Андрей VG написал:
Алексей, а почему бы не через Table.AddColumn?
Андрей, добрый вечер! Только для разнообразия :)
Power Query - Создать столбец дат по условию начало и конца периода
 
Ещё вариант, для разнообразия (предполагается, что в столбце Период даты не повторяются):
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    types = Table.TransformColumnTypes(Source,{{"Период", type date}, {"Начало периода", type date}, {"Конец периода", type date}}),
    group = Table.Group(types, {"Период"}, {"Даты", each List.Dates([Начало периода]{0}, Number.From([Конец периода]{0}-[Начало периода]{0})+1, #duration(1,0,0,0))}),
    expand = Table.ExpandListColumn(group, "Даты")
in
    expand
замена (null) на значения в Power Query
 
GaliyaF, кавычки лишние, просто null.
Power Query: генерация постфикса (либо префикса) в дублирующихся ячейках., Создание постфикса (либо префикса) в дублирующихся ячейках одного столбца таблицы ("артикул") с разными данными в последующих ячейках строки
 
Как-то так:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    group = Table.Group(Source, {"Артикул"}, {"temp", each Table.FromColumns(Table.ToColumns(_)&{List.FirstN({"","A".."Z"}, Table.RowCount(_))}, Table.ColumnNames(_)&{"suffix"})}),
    transform = Table.TransformColumns(group, {"temp", each Table.CombineColumns(_,{"Артикул", "suffix"},Combiner.CombineTextByDelimiter(""),"Артикул")}),
    combine = Table.Combine(transform[temp]),
    final = Table.ReorderColumns(combine,Table.ColumnNames(Source))
in
    final
PQ: Подстановка значений с разными условиями
 
всё так, добавить нечего  :)  
Страницы: 1 2 3 4 5 6 7 След.
Наверх