некрасиво, но, похоже, работает.
- создать PQ-запрос для захвата таблицы столбцов «parameterValue» требуемых значений параметров
- добавить фиктивный столбец и сгруппировать все строки по фиктивным
- используйте Text.Combine для создания списка параметров и удаления других столбцов
- развернуть до значения ячейки
- создать требуемый sql-запрос без предложения IN (используйте «select top 1 ...» для эффективности)
- с помощью Расширенного редактора измените SQL-запрос, удалите «top 1» и примите запрос из шага 1 в качестве параметра IN
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
WHERE IN
, Это все еще не то, о чем я спрашиваю. То, что я хочу сделать, это прочитать массив значений из таблицы.Сначала я бы построил Power Query, например. «Значения» для чтения в строках таблицы Excel. Я бы установил Load To = Connection Only.
Затем в основном запросе на основе SQL я бы слился с этим новым запросом «Значения» и установил Join Kind = Inner.
источник