Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
PQ и краш файла из-за наличия запроса в этом файле
 
Код
let
    src = Table.SelectColumns(Table.SelectRows(Excel.CurrentWorkbook(), each [Name]="data"), "Content"),
    getReadySpoolsColumns = {"1", "3", "4", "9", "10", "126", "12", "23", "28", "34", "39", "47", "115"},
    pt1 = Table.TransformColumns(src, {"Content", each Table.SelectColumns(Table.PromoteHeaders(_), getReadySpoolsColumns)}),
    expandContent = Table.ExpandTableColumn(pt1, "Content", Table.ColumnNames(pt1[Content]{0}), Table.ColumnNames(pt1[Content]{0})),
    pt2 = Table.ReplaceValue(expandContent,"",null,Replacer.ReplaceValue, Table.ColumnNames(pt1[Content]{0})),
    pt3 = Table.SelectRows(pt2, each [10] <> null and [10] <> ""),
    pt4 = Table.TransformColumns(pt3,{{"3", Text.Lower, type text}, {"4", Text.Lower, type text}, {"9", Text.Lower, type text}, {"10", Text.Lower, type text}, {"126", Text.Lower, type text}, {"12", Text.Lower, type text}, {"28", Text.Lower, type text}, {"39", Text.Lower, type text}}),
    pt5 = Table.CombineColumns(pt4,{"3", "4", "9"},Combiner.CombineTextByDelimiter("-", QuoteStyle.None),"zls"),
    pt6 = Table.TransformColumnTypes(pt5,{{"23", Int64.Type}, {"34", Int64.Type}, {"47", type date}}),
    replErrors = Table.ReplaceErrorValues(pt6, {{"23", null}, {"34", null}}),
    pt7 = Table.RemoveColumns(Table.SelectRows(replErrors, each not Text.Contains([10], "sup") and ([126]<>"ремонт" and [126]<>"tur. ремонт") and [115]<>"не получено"), {"115","126"}),
    pt8 = Table.ReplaceValue(pt7, each [28], each if Text.Contains([28],"gm", Comparer.OrdinalIgnoreCase) then 1 else null,Replacer.ReplaceValue,{"28"}),
    pt9 = Table.ReplaceValue(pt8, each [39], each if Text.Contains([39],"gm", Comparer.OrdinalIgnoreCase) then 1 else null,Replacer.ReplaceValue,{"39"}),
    pt10 = Table.AddColumn(pt9, "ready", each 
        if [47]<>null 
        then "готов"
        else 
            if (Text.Start([10],2)="fw" and (([23]<>null and [28]<>null and [34]<>null and [39]=null) or ([23]<>null and [28]=null and [34]<>null and [39]<>null) or ([23]<>null and [28]<>null and [34]<>null and [39]<>null))) 
            then "готов*"
            else 
                if (Text.Start([10],2)="fw" and (([23]<>null and [28]<>null and [34]=null and [39]=null) or ([23]=null and [28]=null and [34]<>null and [39]<>null)))
                then "готов"
                else null),
    pt11 = Table.AddColumn(pt10, "jointWithMaterial", each if [23]<>null or [34]<>null then 1 else 0),
    groupData = Table.Group(pt11, {"zls"}, {{"data", each _, type table [zls=text, 10=text, 12=text, 23=nullable number, 28=nullable number, 34=nullable number, 39=nullable number, 47=nullable date, ready=nullable text, jointWithMaterial=number]}}),
    pt12 = Table.AddColumn(groupData, "ready", each 
        if List.Count(List.RemoveNulls([data][ready]))>0
        then if (List.Count(Table.SelectRows([data], each [jointWithMaterial]=1)[jointWithMaterial]) = List.Count(List.RemoveNulls(Table.SelectRows([data], each [jointWithMaterial]=1)[ready]))) 
            then "WFO" 
            else null
        else null),
    pt13 = Table.Buffer(Table.SelectRows(Table.RemoveColumns(pt12,{"data"}), each [ready]<>null)),
    pt14 = Table.SelectColumns(pt7, {"1", "zls", "10", "12"}),
    pt15 = Table.AddColumn(pt14, "wfo1", each try pt13[ready]{List.PositionOf(pt13[zls],[zls])} otherwise null),
    pt16 = Table.AddColumn(pt15, "wfo2", each try pt13[ready]{List.PositionOf(pt13[zls],[12])} otherwise null),
    pt17 = Table.AddColumn(pt16, "wfo", each if [wfo1]<>null and [wfo2]<>null then "WFO" else null),
    pt18 = Table.SelectRows(Table.SelectColumns(pt17, {"1","wfo"}), each [wfo]<>null)
in
    pt18
PQ и краш файла из-за наличия запроса в этом файле
 
Здравствуйте.
Есть проблема. Краткая предыстория. Имеется файл xlsb, в который вносятся данные по сварке стыков. Файл хранится в сети и им пользуются несколько человек по очереди. Потребовалось сделать ко-какие вычисления для производства, которые я реализовал внутри файла с помощью PQ. Делал я всё на копии этого файла у себя на рабочем столе. Вычисления не сложные, всё работало нормально, довольно быстро вычислялось. Пришло время интегрировать этот запрос в общесетевой файл. Я скопировал текст запроса в блокнот, закрыл свой локальный файл, открыл сетевой файл, в него вставил этот код, сделал табличку выгрузки на лист, и вот тут началось. Выгрузка делалась наверное минут 20 и так и не завершилась удачно. Эксель просто завис и не подавал признаков жизни, хотя локально этот же запрос вычислялся менее, чем за минуту. Я завершил его через диспетчер задач. Тут же захожу в сетевой файл-а мне выдает ошибку восстановления файла. Путём долгих мытарств я вычислил, что именно присутствие этого запроса, который я добавил в файл, ломает его. Но я не пойму, почему это происходит. Запрос, который ломает файл, называется "wfo". Стоит его удалить-файл начинает нормально работать.
Подскажите, где кроется проблема такого поведения PQ?

Так, как файл превышает размер 300кб, прикладываю его на яндекс.диск.
https://disk.yandex.ru/d/CRJZf3Da_hBnCA
Удаление текста до и после символа одновременно, Нужно оставить часть текста до и после определённого символа
 
csv файл не умеет хранить в себе синий цвет выделения текста.
Вам нужно разделить текст по разделителю "_" ?
PQ, Web.Page(JS), регулярки - вытащить номера вхождений в строке
 
Господа, спасибо за варианты. Подобрал наиболее подходящий, всё работает. Каждый из вариантов - пища для ума. Вы лучшие!
Изменено: Andrew Rubanov - 02.05.2025 09:42:33
PQ, Web.Page(JS), регулярки - вытащить номера вхождений в строке
 
Здравствуйте господа.

Имеется таблица, в которой есть столбец с такими данными:
Цитата
G1-87Y11,G2-87Y11,G3-87Y11,G4-87Y11,G1-87Y21,G2-87Y21,G3-87Y21,G4-87Y21,G1-87Y31,G2-87Y31,G3-87Y31,G4-87Y31
D2110BX0-CX(EX)-3201А/G0-D2110BX0-CX(EX)-3201B/G0-D2110BX0-CX(EX)-3201C
G0-87PM01A-TA03G0-87PM01B-TA03G0-33E01C-TA03G0-33E01D-TA03G0-33E01E-TA03G0-33E01F-TA0

Требуется разделить текст по ключу. Ключём для разделения является буква G, за ней любая цифра и далее дефис (например "G2-"). Обращаю внимание, что просто использовать букву "G" нельзя, она может быть частью блока текста, который требуется отделить.
Хочу реализовать это с помощью регулярок, которые можно использовать через функцию Web.Page.
Для этого написал код, протестировал его в браузере, всё фунциклирует, на выходе в браузере выводится текст через запятую с позициями вхождений искомого текста. Далее хочу на основе позиции вхождения дальше колдовать над текстом.
А вот в Web.Page внутри PQ этот код работать уже не желает, выводит ошибку. Ошибка сейчас присутствует в приложенном файле.

Помогите разобраться с регуляркой. Я задаюсь вопросами:
1) какой движок js использует powerquery?
2) этот движок js, который использует pq, поддерживает метод exec?

Ну и если посмотреть с другой стороны - может есть иное решение данной задачи?
PQ и повторение строки требуемое количество раз
 
Великолепно!
Благодарю!
PQ и повторение строки требуемое количество раз
 
Здравствуйте.
Требуется повторить строку столько раз, какое число имеется в ячейке "кол-во".
PQ и трансформация списка по условию
 
Эх я балбес)) Точно! Всё оказалось сильно проще, чем я думал. Спасибо за то, что ткнули куда надо.
PQ и трансформация списка по условию
 
Здравствуйте.
Требуется превратить значения в списке из одной ячейки по разделителю (в данном случае запятая) в список отдельных значений.
Тупым способом, обратив из листа в таблицу, разделив столбец по разделителю, транспонировав и в List - это я могу.
Но хочется от гуру увидеть грамотный изящный способ без глупых шагов, если конечно он существует.
Изменено: Andrew Rubanov - 10.03.2025 18:19:45
PQ и pivot-unpivot столбцов
 
Приветствую!
Есть табличка, в каждой строке которой есть два материала (столбцы 3-4 и 5-6). Заголовки столбцов имеют разные названия.
Требуется поместить пары столбцов с материалами друг под друга, то есть сделать отмену свертывания столбцов.
Тупым многошаговым способом я понимаю как это сделать.
Сюда пришел с вопросом о том, как сделать тоже самое более красиво и изящно за меньшее количество шагов?
Изменено: Andrew Rubanov - 02.03.2025 11:08:46
PQ и столбец нумерации групп данных
 
Здравствуйте.
Не могу додуматься, как сделать счетчик в текущей группе данных. Первым маркером служит первый null во втором столбце. Далее все что идет до второго null должно быть пронумеровано единицей. Второй null цифрой 2 и так далее.  
Изменено: Andrew Rubanov - 16.02.2025 19:22:23
PQ. Table.CombineColumns и своя функция взамен Combiner.CombineTextByDelimiter
 
mechanix 85,  спасибо за вариант решения, но я написал, что хочу понять как решить эту задачу без дополнительного столбца

sotnikov, получается аргумент " х ", передаваемый функции " f " - это "мини-список" из двух значений data1 и data2 ?
PQ. Table.CombineColumns и своя функция взамен Combiner.CombineTextByDelimiter
 
Здравствуйте!
Имеется таблица из двух столбцов. Требуется объединить их, используя функцию Table.CombineColumns
Код
Table.CombineColumns(Источник,{"data1", "data2"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Сведено")
Задача простая и выполняется "кнопками". Но есть одно условие - перед объединением требуется проверить содержимое ячеек на идентичность, и с в случае идентичности не объединять их, а оставить одно значение. Я понимаю, что можно сделать дополнительным столбцом, сравнив ячейки с помощью if-then-else.
В данном вопросе я прошу местных гуру разъяснить синтаксис использования своей функции для проверки содержимого ячеек вместо Combiner.CombineTextByDelimiter.
Другими словами "показать как пользоваться удочкой", а не кормить рыбой )) К моему сожалению никак не могу понять как правильно писать стрелочные функции в таких случаях
PQ & Table.FillDown с условием
 
Vik_tor, да, способ не изящный, но простая логика доступна простым крестьянам. Спасибо за вариант!

sotnikov, вот этот способ изящнее и умнее. Не могу понять, какую логику выполняет функция "g", можно пояснить?
PQ & Table.FillDown с условием
 
Здравствуйте! Требуется заполнить слово "название" в свой соответствующий блок данных с помощью PowerQuery. Конечно же стандартный способ через Table.FillDown не работает, поскольку при первом заполнении в любую сторону заполняется "Заголовком" из другого блока данных. Не могу ума дать, как сделать это. "Название" может находится в разных строках.
Требуется конвертировать данные из XLS в PLT (plotter)
 
Да про поиск в яндексе и гугле - это понятно.
Думал может есть какой-то фанатский сайт, где собраны дополнения.
Ладно, понял, что напрямую из xls в plt не смогу конвертировать.
Требуется конвертировать данные из XLS в PLT (plotter)
 
А кроме официального "магазина" что-то типа сторонней базы существует?
Требуется конвертировать данные из XLS в PLT (plotter)
 
На работе имеется задача брать текст (в данном случае из таблиц эксель), вставлять его в coreldraw, выбирать "сохранить как", выбирать формат файла plt.
Интересен вопрос - а в экселе есть-ли вообще некая возможность с помощью расширения организовать такую возможность конвертации?

И глобальный вопрос - существует-ли вообще база расширений (надстроек) для экселя, где можно поискать что-то интересное и полезное для себя?
Изменено: Andrew Rubanov - 04.02.2025 09:52:13
PQ и индексация (нумерация) строк по определенному алгоритму
 
Подниму тему. Я стараюсь разбираться, как работают алгоритмы и в решении выше пост16 есть строка
Код
c=List.Difference(b,{y}){0}?,

Не могли бы пояснить, что делает оператор "?" в данном случае? Не смог найти нигде в спецификации про это. Есть только "??", но к данному случаю, как я понимаю, он не относится.

Почему Power Query так медленно работает?
 
Вот и мне пришлось искать в интернете причины медленной работы PQ.
Замечательный инструмент, который работает порой через "пень-колоду".
На ровном месте выдает ошибки (то таблица ему не та - недопустимый формат, то какие-то поля OLE DB не устраивают его, и там ещё масса подобных сообщений). Никакого решения я не смог найти. Делаю на одном компьютере запрос, закидываю в сетку, коллега открывает мой файл с запросом - всё опять сломано, не работает. Иду чинить... Порой ремонт заключается в том, чтоб просто открыть запрос в PQ, нажать там по очереди "обновить" на каждый запрос, и обязательно терпеливо дождаться его выполнения. Ведь PQ гордая птица, 10000 строк быстро не должны обрабатываться. Это же не нормально! МС Офис является образцом и примером для подражания всех остальных офисных "пакетов". А тут такой факап с ним. Так и приходиться работать :-(
Изменено: Andrew Rubanov - 04.11.2024 14:55:25
PQ и индексация (нумерация) строк по определенному алгоритму
 
Спасибо за интерес к этой теме. Раз уж вам это интересно, помогите прикрутить любое из этих решений внутрь PQ. То есть чтоб сырые данные брались не из таблицы с листа эксель, а из столбцов в PQ. Можно оформить решение отдельной функцией, где например в качестве аргументов будут передаваться столбец с номером стыка и столбец с номерами труб. Так было бы вообще шикарно.

п.с. завидую вам, что можете написать эту логику. Я вроде не тупой, но мне очень трудно понять, как можно такой код придумать))
PQ и индексация (нумерация) строк по определенному алгоритму
 
Цитата
tula19 написал:
Решение без использования табличных функций.
А вот этот способ сработал точно, как надо. Проверил, добавив ещё парных номеров труб, нумерация продолжилась дальше в том порядке, как требуется. Огромное спасибо вам обоим за помощь. Для меня такие монструозные "функции" сложны, но надеюсь смогу прикрутить к существующей задаче.
Изменено: Andrew Rubanov - 22.10.2024 14:27:10
PQ и индексация (нумерация) строк по определенному алгоритму
 
Цитата
AlienSx написал:
вроде сходится с примером (без "начало" и "далее не найдено" - там и так все понятно)
Спасибо за уделённое время. Задачка действительно не простая судя по коду. Результат получился почти правильным. На картинке указал красными стрелками как получилось, а зелеными стрелками желаемый результат. Получается ваш код "перевернул" трубы у каждого стыка.
Изменено: Andrew Rubanov - 22.10.2024 14:26:42
PQ и индексация (нумерация) строк по определенному алгоритму
 
Здравствуйте!
Имеется такой список. В нём в первом столбце - номер стыка. Каждый стык занимает две строки (цветом специально выделил для наглядности пары строк одного стыка). В третьем столбце номера труб по одну и другую сторону стыка. Трубы внутри стыка могут быть в рандомном порядке, то есть первая строка в стыке не обязательно является первой трубой, может и наоборот. Поэтому привязаться к каждой первой строке каждого стыка тоже не получится. Задача такая - расставить с помощью функций (формул) нумерацию в порядке следования труб. То есть - есть "начало", это первая труба. Следующая труба - это вторая труба в этом стыке. Соответственно надо найти такой же номер (второй трубы первого стыка) у другого стыка, пронумеровать его номером 3, взять вторую трубу второго стыка, пронумеровать её номером 4 и найти этот же номер трубы уже у следующего стыка. И так далее....
На случай, когда будет не найдена последующая труба - просто прекратить нумерацию. Тем самым я увижу, на какой трубе у нас проблема во внесении данных. Ну и нумерация нужна не просто, чтоб найти эту проблему, а чтоб в последствии отсортировать по этому новому столбцу "нумерация", и весь список стыков и труб получился в том порядке, в котором они сварены в линию.
И чуть не забыл. Прошу помочь с решением этого вопроса именно в powerquery, поскольку там ещё много других столбцов, которые также нужно обрабатывать. Я прикрепил лишь базовую выжимку, чтоб понять алгоритм такой нумерации. Но если у кого будет решение для excel, то как пищу для ума тоже буду рад увидеть.
Изменено: Andrew Rubanov - 21.10.2024 19:10:07
PQ и вытягивание значения из одного столбца по совпадению в другом
 
Сделал такое решение - создал столбец с такой формулой
Код
[group][Количество]{List.PositionOf([group][Значение],[Значение])}

Из формулы понятно, что я сослался на нужную строку во вложенной таблице, найдя индекс строки с помощью List.PositionOf

Всем спасибо за помощь))

Изменено: Andrew Rubanov - 20.10.2024 17:04:21
PQ и вытягивание значения из одного столбца по совпадению в другом
 
Приветствую!
Не хватает ума как сделать функцию, что вытянула значение из вложенной таблицы (столбец uniq_number -> вложенная таблица -> столбец количество) по совпадению номера трубы (совпадение N трубы в основной таблице и вложенная таблица в столбце uniq_number[Значение]. Во вложенной таблице я посчитал количество повторяющихся значений, теперь надо вытянуть сколько раз труба повторяется в основной таблице. Скрин с графическим описанием "что требуется" во вложении. В примере одна строка, требуется, чтоб напротив каждой вытянулось
Изменено: Andrew Rubanov - 20.10.2024 17:03:09
Скрытые диапазоны в книге xlsx
 
Цитата
написал:
Вы можете макрос из статьи изменить и просто сделать видимыми все имена и уже через стандартное окно удалить только не нужные.Для этого в коде строкуКодobjName.Deleteзамените наКодobjName.Visible = True
Способ также сработал. После скрипта все эти "корявые" диапазоны стали видны в окне "Диспетчер имен" и удалены вручную. Спасибо за помощь, вопрос полностью решен.
Скрытые диапазоны в книге xlsx
 
Цитата
написал:
Можно макросами. Вот здесь есть код, который удаляет ВСЕ имена в книге:  Как уменьшить размер файла Код почти в самом низу статьи: Sub Delete_All_Names()
Помогло!  Спасибо за помощь! После "чистки" файл стал заметно быстрее грузится в PQ.

И как всегда в процессе тестирования наступаешь на подводные камни. А как можно очистить этим скриптом всё, кроме нужного мне? А то он поудалял в том числе и "умные" таблицы", которые мне нужны. А у меня все ссылки на эти таблицы слетели. Привязаться можно было бы например к "видимости" диапазона, если такой атрибут имеется у него.
Изменено: Andrew Rubanov - 17.10.2024 15:41:12
Скрытые диапазоны в книге xlsx
 
Здравствуйте! На работе имеется файл xlsx, в котором производится внесение данных, строк около 10 тысяч, столбцов около 200. К сожалению с файлом работают много человек, со временем файл стал тормозить. Ранее он был в общем доступе (для совместного редактирования), потом общий доступ отменили по причине полного непонимания людей как правильно работать и что нажимать при совместном сохранении и тд. При подгрузке этого файла к powerquery я вижу множество именованных диапазонов (скрин pq.png), которые почему-то не видны в стандартном окне excel-формулы-диспетчер имен (скрин диспетчер имен xlsx.png). Суммарно в PQ видно около 130 строк с возможными данными в этой книге, из которых "полезные" данные - это всего около 10 листов (скрин листы книги xlsx.png).
Подскажите есть ли способ почистить книгу от этого "мусора"?
Excel и всплывающая плашка с подсказкой аргументов формулы
 
Здравствуйте. Проблема на прикрепленной картинке - бл$#ская подсказка каждый раз появляется ровно поверх буквенных обозначений столбцов, и как назло именно тех столбцов, которые мне нужно смотреть. Каждый раз убираю её к чертям собачьим, делая жёсткое движение мышью, в надежде доставить боль создателям этой плашки. Но в следующий раз она опять закрывает мне обзор. ВАЖНО! Мне она нужна, убрать полностью - не вариант.
Вопрос - можно ли изменить её "положение по умолчанию" ?
Изменено: Andrew Rubanov - 08.10.2024 12:49:09
Страницы: 1 2 След.
Наверх