Как сцепить столбцы в power query
Перейти к содержимому

Как сцепить столбцы в power query

  • автор:

Объединение столбцов (Power Query)

В Power Query можно объединить несколько столбцов в запросе. Вы можете объединить столбцы, чтобы заменить их одним объединенным столбцом, или создать новый объединенный столбец вместе со столбцами, которые будут объединены. Объединить можно только столбцы типа данных «Текст». В примерах используются следующие данные:

Совет Лучше всего создать новый столбец и сохранить исходные столбцы, чтобы избежать ошибок обновления, которые могут возникнуть в будущем.

Пример данных, используемых для объяснить команду

Слияние столбцов с заменой существующих столбцов

При объединении столбцов выбранные столбцы объединяются в один столбец под названием Объединенные. Исходные два столбца больше не доступны.

В этом примере мы объединяем OrderID и CustomerID.

  1. Чтобы открыть запрос, найдите ранее загруженную из редактора Power Query, выберем ячейку в данных и выберите запрос>изменить. Дополнительные сведения см. в этойExcel.
  2. Убедитесь, что столбцы, которые вы хотите объединить, являются текстовыми. При необходимости выберем столбец и выберите преобразовать>тип данных >текст.
  3. Выберите несколько столбцов, которые нужно объединить. Чтобы выбрать несколько столбцов поперемно или поперемно, нажмите shift+щелчок или CTRL+щелчок каждого последующего столбца.

Выбор разделителя

Порядок выбора задает порядок объединенных значений.

  • Выберите преобразовать>объединить столбцы.
  • В диалоговом окне Слияние столбцов укажите, какой из столбцов нужно вставить в каждый объединенный столбец. Вы можете выбрать один из готовых разделителей или задать собственный.
  • Нажмите кнопку ОК.
  • Объединенный столбец

    Объединенный столбец можно переименовать, чтобы он был более осмысленным. Дополнительные сведения см. в статье Переименование столбца.

    Слияние столбцов с созданием нового столбца

    Вы можете вставить настраиваемый столбец в таблицу запроса и использовать его для эффективного объединения двух или более столбцов. В этом случае объединенные столбцы будут по-прежнему доступны вместе с новым объединенным столбцом в таблице запроса.

    В этом примере мы соедиам OrderID и CustomerID, разделив их пробелом.

    1. Чтобы открыть запрос, найдите ранее загруженную из редактора Power Query, выберем ячейку в данных и выберите запрос>изменить. Дополнительные сведения см. в этойExcel.
    2. Убедитесь, что столбцы, которые вы хотите объединить, имеют текстовый тип данных. Выберите преобразовать>Тип >текст.
    3. Выберите Добавить столбец>настраиваемый столбец. Появится диалоговое окно Пользовательский столбец.
    4. В списке Доступные столбцы выберите первый столбец и выберите Вставить. Вы также можете дважды щелкнуть первый столбец. Столбец добавляется в поле Настраиваемая формула столбца сразу после знака равно (=).

    Ввод пользовательской формулы для слияния значений столбцов

  • Выберите ОК.
  • Объединенный настраиваемый столбец

    Результат

    Настраиваемый столбец можно переименовать, чтобы он был более осмысленным. Дополнительные сведения см. в статье Переименование столбца.

    Как сцепить столбцы в power query

    Добрый день.
    Есть 2 задачи
    1. Объединить значение из 2 столбцов в один.
    2. Объединить значение из столбца и произвольный текст.

    У меня получается вот так

    1.[Column1]&[Column2] 2. "Hello" & [Column1]

    Но везде выдается ошибка — Error: Не удается применить оператор & к типам Text и Number.

    P.S. Одно из решений такой — надо изначально столбец с числовым значение перевести в формат «Текст», тогда все получается. А есть вариант если не пеерводить и оставлять в формате «Целое число»?

    Прикрепленные файлы

    • Пример (1).xlsx (18.02 КБ)

    Как сцепить столбцы в power query

    Текст представляет собой адаптированный перевод статей Chris Webb (Крис Вебб), оригинал — Ensuring Columns Are Always Present In A Table Returned By Power Query и Checking Columns Are Present In Power Query. Рассматривается англоязычный Power Query.

    Крис Вебб (Chris Webb) — независимый эксперт, консультант по технологиям Analysis Services, MDX, Power Pivot, DAX, Power Query и Power BI. Его блог — это кладезь информации на тему перечисленных технологий. Вот уже более 10 лет он пишет про BI-решения от Microsoft. Количество его статей перевалило за 1000! Также Крис выступает на большом количестве различных конференций вроде SQLBits, PASS Summit, PASS BA Conference, SQL Saturdays и участвует в различных сообществах.
    Крис любезно разрешил нам переводить его статьи на русский язык. И это одна из них.

    Тонкости работы со столбцами в Power Query

    Исчезнувшие или переименованные столбцы могут стать причиной многих проблем при работе с Power Query. Таких, как: ошибки при обновлении запроса, нарушение расчетов в сводных таблицах, самостоятельное переформатирование последних, требующее ручной корректировки. Так что неплохо было бы выстроить логику запроса так, чтобы обеспечивалось наличие в возвращаемой таблице необходимых столбцов.

    Рассмотрим следующий csv-файл:

    Если мы создадим запрос и подключимся к файлу, то получим приблизительно такой код:

    let Source = Csv.Document(File.Contents("C:\Demo.csv"), null,",",null,1252), #"First Row as Header" = Table.PromoteHeaders(Source), #"Changed Type" = Table.TransformColumnTypes(#"First Row as Header",>) in #"Changed Type"

    Предположим наш запрос называется GetSourceData. Предположим также, что выходные данные должны быть таблицей с тремя столбцами: Product, Month и Sales. При этом Product и Month должны иметь текстовый формат, а Sales — числовой. Основные шаги, чтобы обеспечить это, даже в случае изменения структуры csv-файла, следующие:

    1. Создать запрос, подключающийся к источнику данных, подобно запросу GetSourceData из вышеприведённого примера.
    2. Создать запрос, всегда возвращающий таблицу с необходимыми столбцами, но не содержащую строк.
    3. Добавить вторую таблицу к первой. Результатом будет таблица, содержащая все столбцы обеих таблиц.
    4. Удалить ненужные столбцы.
    #table( type table [Product=text, Month=text, Sales=number], <>)

    Если вы хотите, чтобы конечный пользователь мог конфигурировать результат под себя, можно воспользоваться таблицей Excel. Например, такой:

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

    let Source = Excel.CurrentWorkbook()[Content], #"Transposed Table" = Table.Transpose(Source), #"First Row as Header" = Table.PromoteHeaders(#"Transposed Table"), #"Changed Type" = Table.TransformColumnTypes(#"First Row as Header", , , >) in #"Changed Type"

    Пусть этот запрос называется ExpectedColumns.

    Создать третий запрос, добавляющий ExpectedColumns в конец запроса GetSourceData, тривиальная задача. Если в запросе GetSourceData присутствуют все ожидаемые столбцы, то ничего не изменится. Если нужные столбцы были переименованы или удалены, то мы получим таблицу, в которой будут все столбцы из обоих запросов. Например, переименуем Month в Months, получим такой результат:

    Наконец, в третьем запросе выделяем нужные столбцы (т.е. те, которые есть в запросе ExpectedColumns), щелкаем ПКМ и выбираем пункт Remove Other Columns. Этим мы удаляем лишние столбцы. Для предыдущего примера получим:

    Несмотря на то, что столбец Month потерял все названия месяцев и содержит только значения null, при дальнейшей обработке ошибки не будут возникать.

    Код третьего запроса:

    let Source = GetSourceData, Append = Table.Combine(), #"Removed Other Columns" = Table.SelectColumns(Append,) in #"Removed Other Columns"

    В качестве бонуса — код ещё одного запроса. В нём сравниваются столбцы из GetSourceData и ExpectedColumns, после чего выводится список добавленных/удалённых столбцов.

    let //Соединимся с таблицей Excel, содержащей ожидаемые заголовки ExcelSource = Excel.CurrentWorkbook()[Content], //Получаем список ожидаемых заголовков ExpectedColumns = Table.Column(ExcelSource, "ColumnName"), //Список заголовков файла csv CSVColumns = Table.ColumnNames(GetSourceData), //Ищем отсутствующие столбцы MissingColumns = List.Difference(ExpectedColumns, CSVColumns), //Ищем добавленные столбцы AddedColumns = List.Difference(CSVColumns, ExpectedColumns), //Все изменения OutputMissing = if List.Count(MissingColumns)=0 then "No columns missing" else "Missing columns: " & Text.Combine(MissingColumns, ","), OutputAdded = if List.Count(AddedColumns)=0 then "No columns added" else "Added columns: " & Text.Combine(AddedColumns, ","), Output = OutputMissing & " " & OutputAdded in Output

    Passing a parameter into an MDX Query using Power Query in Excel

    My parameter is ‘db_param’, and it works fine to build the connection to the right database inside the server, but I can’t manage to pass it to the MDX query. I would essentially like to replace ‘db_name’ with db_param such that it calls the parameter. Any ideas? I tried single brackets, double brackets, inside quotation marks, not inside quotation marks. And I can’t seem to create a chain either. (e.g. «SELECT * FROM table_a WHERE db = » + db_param + «rest of the query»] Any ideas?

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *