У цьому дописі буде обговорено, як визначити фільтр за допомогою xmSQL і запит механізму зберігання в LuckyTemplates. Ви також дізнаєтеся, що робить VertiPaq, коли ви фільтруєте діапазон. Це важлива тема, оскільки потужність того, що застосовується у фільтрах, є найбільшою рушійною силою продуктивності DAX.
Запит xmSQL — це мова квазі-продовження, яка має пропозиції SELECT , FROM і WHERE . Речення WHERE — це ваш фільтр, який вводиться, коли ви використовуєте абофункція. Фільтри існують як у плані логічного запиту, так і в плані запиту механізму зберігання.
Зміст
Фільтр переходу контексту
Цей зразок запиту міститьфункції із загальним обсягом продажів іфункція над Фактичними продажами. Фактичні продажі множать поточну ціну та кількість продажів. У цьому прикладі вам потрібно зосередитися лише на продажах, які перевищують 300.
Виконання запиту дасть результат таблиці з одним рядком, що не дуже корисно.
Однак якщо ви перейдете на вкладку Server Timings і відскануєте, ви побачите оператор xmSQL, який надасть вам інформацію про те, що робить ваш запит.
Речення WITH із $Expr0 означає, що обчислюється математичний вираз. Далі вираз вибирається з таблиці даних продажів або таблиці фактів продажів, а потім фільтрується в реченні WHERE із заданими умовами.
У фізичному плані запиту можна побачити оператор Filter_Vertipaq . Це означає, що запит надсилається до механізму зберігання. Наскільки це можливо, використовуйте систему зберігання даних як фільтр, щоб мати швидшу продуктивність DAX.
Це ще один зразок запиту, який використовує SUMX замість функції CALCULATETABLE . Якщо ви запустите запит і переглянете інструкцію xmSQL, ви побачите той самий результат, сканування та плани запиту.
Для отримання результатів можна використовувати функцію SUMX або CALCULATETABLE . Але SUMX іноді може бути повільнішим, ніж CALCULATETABLE . Найкраще використовувати останній, щоб досягти більш плавної роботи DAX.
Фільтрувати діапазон у LuckyTemplates
Це зразок запиту, який фільтрує діапазон. Умова фільтра отримує дані про продажі, якщо поточна ціна більша або дорівнює 300, але менша за 1000.
Якщо ви запустите запит і подивіться на оператор xmSQL, ви побачите діапазон у реченні WHERE .
Якщо ви подивіться на фізичний план запиту, ви побачите 2 Filter_Vertipaq . Це тому, що ваш фільтр має діапазон від 300 до 1000. Це також означає, що система зберігання даних працює над запитом і обчисленням.
Ось ще один запит із декількома значеннями з використанням пропозиції АБО , який позначається « ||» . ”.
Після виконання запиту можна побачити зміни в реченні WHERE в операторі xmSQL. xmSQL перетворив оператор АБО на оператор IN .
Якщо ви використовуєте IN у запиті, це дасть той самий оператор xmSQL і результати. Пам’ятайте, що коли ви використовуєте IN , це має бути таблиця, яка позначається фігурними дужками.
Але використання речень OR або IN не має значення, тому що, коли механізм зберігання даних читає його, він знає, що він має той самий оператор xmSQL. Ось чому він дає той самий результат у 939 012 доларів.
Висновок
У цій публікації блогу ви дізналися, як налаштувати умову фільтра у своєму DAX у . Фільтри визначають, які результати можна отримати з вашого запиту DAX у LuckyTemplates. Це важливі сутності, які необхідно встановити, щоб викликати контекстні переходи. Якщо ви хочете отримати конкретні результати за різні часові періоди або діапазони, у запит потрібно ввести контекст фільтра.
Нік