Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Одна из наиболее распространенных причин использования диагностики запросов заключается в том, чтобы лучше понять, какие операции были "свернуты" Power Query для выполнения на серверном источнике данных, что также называется "сворачиванием". Если мы хотим понять, что происходит, мы можем посмотреть, какие именно "наиболее специфические" запросы отправляются во внутренний источник данных. Мы можем посмотреть на это как для ODATA, так и для SQL.
Операция, описанная в статье о диагностике записи, по сути состоит из четырех этапов.
- Подключается к источнику данных
- Извлечение данных из таблицы клиента
- Фильтрует роль идентификатора клиента на "Представитель по продажам"
- Группы по "Страна"
Так как соединитель ODATA в настоящее время не поддерживает свертывание COUNT() в конечную точку, и так как эта конечная точка несколько ограничена в своих операциях, мы не ожидаем, что последний шаг будет свернут. С другой стороны, фильтрация относительно тривиальная. Это именно то, что мы видим, если мы рассмотрим наиболее конкретный вышеупомянутый запрос:
Request:
GET https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle eq 'Sales Representative'&$select=CustomerID%2CCountry HTTP/1.1
Response:
https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle eq 'Sales Representative'&$select=CustomerID%2CCountry
HTTP/1.1 200 OK
Мы видим, что фильтруем таблицу по ContactTitle, равным значению "Представитель по продажам", и возвращаются только два столбца — идентификатор клиента и страна. Страна, конечно, необходима для операции группировки, которая, так как она не выполняется конечной точкой ODATA, должна выполняться локально. Мы можем заключить, что здесь складывается и что не складывается.
Аналогичным образом, если мы рассмотрим конкретный и окончательный запрос, создаваемый в диагностике SQL, мы видим что-то немного другое:
count(1) as [Count]
from
(
select [_].[Country]
from [dbo].[Customers] as [_]
where [_].[ContactTitle] = 'Sales Representative' and [_].[ContactTitle] is not null
) as [rows]
group by [Country]
Здесь можно увидеть, что Power Query создает подвыборку, в которой ContactTitle фильтруется по значению "Представитель по продажам", а затем в этой подвыборке выполняется группировка по стране. Все наши операции закрыты.
С помощью диагностики запросов мы можем изучить, какие операции свернуты. В будущем мы надеемся упростить использование этой возможности.