Семинар 15. Работа с агрегатами


ОБЫЧНЫЕ И ОГРАНИЧЕННЫЕ СВЯЗИ



бет6/10
Дата07.05.2023
өлшемі1,86 Mb.
#90924
түріСеминар
1   2   3   4   5   6   7   8   9   10
ОБЫЧНЫЕ И ОГРАНИЧЕННЫЕ СВЯЗИ

Таблица на стороне многие

Таблица на стороне одного

Двойной режим

Двойной режим

Импортировать

Импорт или двойной режим

DirectQuery

DirectQuery или двойной режим

Единственный случай, когда связь между источниками считается обычной, — когда для обеих таблиц установлен режим импорта. Связи "многие ко многим" всегда считаются ограниченными.
Сведения об обращении к агрегатам между источниками, которые не зависят от связей, см. в разделе Агрегаты, основанные на столбцах группирования.
Примеры запросов к агрегатам на основе связей
Следующий запрос обращается к агрегату, так как столбцы в таблице Date находятся на том уровне детализации, который может обратиться к агрегату. Для столбца SalesAmount используется агрегат Sum.

Следующий запрос не достигнет агрегата. Хотя запрос выполняется для получения суммы SalesAmount, он выполняет операцию группирования по столбцу в таблице Product, но степень ее детализации не позволяет обращаться к агрегату. Если в модели выполняются связи, подкатегория продукта может иметь несколько строк Product. При этом запрос не сможет определить, по какому продукту следует выполнять агрегирование. В этом случае запрос возвращается в режим DirectQuery и отправляет запрос SQL в источник данных.

Агрегаты — это не просто вычисления для подсчета суммы. Они могут также быть удобны для сложных вычислений. По сути, сложное вычисление разделяется на вложенные запросы для каждой функции SUM, MIN, MAX и COUNT, и каждый вложенный запрос вычисляется для определения возможности обращения к агрегату. Эта логика не соблюдается во всех случаях из-за оптимизации плана запроса, но в целом она должна применяться. Следующий пример запроса достигнет агрегата:

Агрегаты можно использовать для функции COUNTROWS. Приведенный ниже запрос обращается к агрегату, так как для таблицы Sales определен агрегат Подсчитать строки таблицы.

Агрегаты можно использовать для функции AVERAGE. Следующий запрос достигнет агрегата, так как результат AVERAGE внутренним образом рассчитывается как сумма (SUM), деленная на количество (COUNT). Так как столбец UnitPrice включает агрегаты, определенные для SUM и COUNT, агрегирование выполняется.

В некоторых случаях агрегаты можно использовать для функции DISTINCTCOUNT. Следующий запрос достигнет агрегата, так как существует запись GroupBy для CustomerKey, что обеспечивает различие CustomerKey в таблице агрегирования. Однако при использовании этого метода может быть достигнуто пороговое значение производительности: около 2–5 миллионов уникальных значений могут повлиять на производительность запросов. Тем не менее это может быть удобно в ситуациях, когда в таблице сведений содержатся миллиарды строк, но в столбце всего 2–5 миллионов уникальных значений. В этом случае функция DISTINCTCOUNT может выполняться быстрее, чем проверка таблицы с миллиардами строк, даже если они содержатся в кэше в памяти.

Функции логики операций со временем DAX поддерживают агрегирование. Следующий запрос использует агрегирование, так как функция DATESYTD создает таблицу значенийCalendarDay, а таблица агрегирования находится на уровне детализации столбцов группировки таблицы Даты. Это пример возвращающего табличное значение фильтра функции CALCULATE, который может работать с агрегатами.



Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет