Мощный запрос для фильтрации представления SQL на основе списка столбцов Excel - PullRequest
1 голос
/ 08 марта 2019

Есть ли способ фильтрации представления SQL на основе списка значений в столбце таблицы Excel с помощью Power Query?

У меня есть представление SQL, которое возвращает большой набор данных (миллионы записей или свойств). Пользователи хотят фильтровать это на основе столбца таблицы идентификаторов свойств идентификаторов. Я знаю, что могу просто выполнить объединение слиянием на основе идентификатора свойства между представлением и столбцом Excel в мощном запросе. Но похоже, что слияние сначала приносит миллионы записей, а затем фильтрует их в соединении. Что занимает много времени. Пользователи хотят ежедневно изменять список идентификаторов свойств и запускать запрос.

По сути, я хотел создать в Excel мощный запрос что в SQL

SELECT * FROM SQLViewName 
WHERE PropertyID IN (Select Column from ExcelTable) 

1 Ответ

2 голосов
/ 10 марта 2019

Вы должны быть в состоянии сделать это с помощью функции List.Contains.

Если мой ExcelTable равен

ID
---
436
437
438
439

затем добавление фильтра, как это должно сделать трюк:

Table.SelectRows(SQLViewName, each List.Contains(ExcelTable[ID], [PropertyID]))

Когда я попробовал это сделать и сделал View Native Query на последнем примененном шаге, он свернул таблицу Excel в предложение WHERE со значениями ExcelTable в виде литералов, подобных этому:

select [_].[PropertyID],
    [_].[OtherColumns]
from [dbo].[SQLViewName] as [_]
where [_].[PropertyID] in (436, 437, 438, 439)

Это позволило мне загрузить таблицу с многомиллионными строками всего за пару секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...