Параметризация в п. в PowerQuery SQL-запроса

Я видел примеры (закодированы), что параметризовать PowerQuery оператор SQL с чтения значений из ячеек таблицы, а таблицы. Но они всегда имеют дело с простыми логическими условными выражениями типа myField = <parameter>. Я хочу параметризовать предложение IN (myField IN <values>), где произвольное число values считываются из таблицы Excel (также в том же файле). Кто-нибудь знает, как это сделать?

8
задан Dmitry B.
15.01.2023 22:26 Количество просмотров материала 3515
Распечатать страницу

3 ответа

некрасиво, но, похоже, работает.

  1. создать запрос PQ, чтобы захватить одну таблицу столбцов "parameterValue" желаемых значений параметров
  2. добавить фиктивный столбец и сгруппировать все строки по манекену
  3. использовать текст.Объединяются, чтобы создать список параметров и удалить другие столбцы
  4. детализация до значения ячейки
  5. создать желаемый sql запрос без in (используйте ' select top 1... для эффективности)
  6. использование расширенного редактора, изменить запрос sql удалите 'top 1' и примите запрос от шага 1 как в параметре

query1:

let
    source = *yourData*,
    addDummy = Table.AddColumn(source, "Custom", each 1),
    group = Table.Group(addDummy, {"Custom"}, {{"Count", each _, type table}}),
    string = Table.AddColumn(group, "queryString", each Text.Combine([Count][parameterValue],"','")),
    removeOtherColumns = Table.SelectColumns(string,{"queryString"}),
    queryString = removeOtherColumns{0}[queryString]
in
    queryString

затем

query2:

let
    Source = Sql.Database("*serverName*", "*dbName*", [Query=
Text.Replace("
select * from x
where parameterValue in('" & query1 & ")", ")", "')" )
])
in 
Source
1
отвечен stretch 2023-01-17 06:14

Кен пульс имеет хорошую запись об использовании таблицы параметров с Power Query в своем блоге здесь: http://www.excelguru.ca/blog/2014/11/26/building-a-parameter-table-for-power-query/

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

вы, возможно, потребуется расширить этот подход, чтобы построить свой SQL заявление как строка.

0
отвечен teylyn 2023-01-17 08:31

Я бы сначала построил запрос питания, например "значения", чтобы читать в строках таблицы Excel. Я бы установил нагрузку только на = соединение.

затем в главном запросе на основе SQL я бы слился с этим новым запросом" Values " и установил тип соединения = Inner.

0
отвечен Mike Honey 2023-01-17 10:48

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх