Змінні та вирази в редакторі Power Query
У цьому посібнику обговорюватимуться змінні та вирази в редакторі Power Query. Ви навчитеся правильно їх писати та будувати.
У цьому посібнику йтиметься про вибір або фільтрування конкретної дати у вашому файлі . Матеріал, використаний у цьому підручнику, походить із . Ви дізнаєтесь, як вирішити проблему, і зрозумієте використані методи. Ви можете переглянути повне відео цього підручника внизу цього блогу.
Зміст
Розуміння звіту даних у LuckyTemplates
Це зразок звіту даних, який буде використано. Він складається з одного візуалу таблиці та двох слайсерів.
Мета полягає в тому, щоб вибрати дату в стовпці «Дата» на розділювачі. Це означає, що після вибору дати в слайсері візуалізація таблиці відображатиме попередні дні з 7-денним інтервалом. У цьому прикладі в розділювачі дат вибрано 12 травня 2007 року.
Таблиця повинна відображати попередню з різницею в 7 днів між датами.
Вам також потрібно створити параметр «що якщо» , щоб динамічно відображати кількість дат на основі вибору. Якщо вибрати 3 , візуалізація таблиці має відображати лише 3 дати.
Відтворення таблиці та візуалізації
Першим кроком є створення параметра what if . На робочому столі LuckyTemplates перейдіть на вкладку «Моделювання» та виберіть «Новий параметр» .
Додайте ім’я до параметра та встановіть Тип даних на Ціле число . Потім установіть мінімальне, максимальне, приріст і значення за замовчуванням, як показано на зображенні нижче. Додайте роздільник на сторінку, поставивши прапорець.
Після того, як ви натиснете OK, буде згенеровано роздільник. Перетворіть роздільник на список, натиснувши кнопку спадного меню та вибравши «Список».
Наступне, що потрібно зробити, це створити дубліковану таблицю дат, яка використовуватиметься як відключена таблиця дат. Перейдіть до редактора Power Query і дублюйте Dates .
Потім перейменуйте дублікат DisDate і натисніть «Закрити та застосувати».
Завантаження таблиць дат і роздільників у LuckyTemplates
Після завантаження дубльованої таблиці в модель LuckyTemplates створіть роздільник зі стовпцем дати з відключеної таблиці дат. Відкрийте таблицю DisDate і перетягніть Date на полотно.
Потім перетворіть візуалізацію на розріз.
Після цього змініть формат розділювача на List . Тоді візуалізація буде виглядати так.
Далі скопіюйте роздільник і змініть поле даних зі стовпцем Дата з таблиці Дати.
Вибір дати в розділювачі дат обмежить кількість видимих рядків таблиці продажів у матриці. Якщо вибрати 14 березня 2005 року, матриця відображатиме лише цю дату.
Результат і вимірювання не працюватимуть, якщо ви використовуєте це налаштування. Причина в тому, що ще до того, як захід почне працювати, доступ до матриці вже відфільтровано. Для цих відфільтрованих значень ви не зможете створити дати з інтервалами.
Створення показників для зрізів виділення
Вам потрібно створити налаштування дат, які не фільтрують матрицю безпосередньо, коли виділення розміщується над роздільником. Фільтрування матриці має проходити через слайсер, а не безпосередньо. Отже, якщо вибрати дату з розділювача DisDate, у матриці не відбудеться жодних змін.
Це відбувається через те, що таблиця DisDate не пов’язана з таблицею Dates. Ось чому відключена таблиця є важливою.
Видаліть роздільник із таблицею дат і створіть перший захід. Міра отримає значення, вибране з розділювача «Дати для показу». Перша змінна, яку вам потрібно створити, це ValuesToShow . Далі прирівняйте його до значення Dates To Show і введіть RETURN , щоб повернути вибрані значення.
Перетягніть цю міру в матрицю. Якщо ви виберете 6 у розділі «Дати для показу», стовпець «Вимір» у матриці також дасть 6.
Далі створіть ще одну змінну, яка буде отримувати дату відключення, вибрану в розділювачі.
Після цього ви побачите значення, вибране в розділювачі DisDate у стовпці «Вимірювання».
Створення розрахункової таблиці
Створіть список дат із 7-денними інтервалами, починаючи з вибраної дати в розділювачі. Потім переконайтеся, що матриця генеруватиме кількість днів на основі вибору зрізу «Дати для показу». Для цього спочатку потрібно створити .
Обчислена таблиця допомагає візуалізувати, як дати генеруються в коді DAX. Перейдіть до перегляду даних і натисніть Нова таблиця.
Введіть змінну SelectedDate і прирівняйте її до функції DATE . Потім введіть дату в дужках. Далі створіть ще одну змінну, яка вказуватиме кількість дат, які ви хочете показати в матриці. Введіть DatesToShow і прирівняйте його до кількості дат.
Після цього створіть ще одну змінну, яка створить список дат із 7-денними інтервалами. Введіть список дат і скористайтеся функцією GENERATESERIES . це функція, яка генерує список чисел, передаючи кілька аргументів.
Для першого аргументу введіть SelectedDate – (DatesToShow * 7) як початкове значення. Далі введіть SelectedDate як кінцеве значення. Для останнього аргументу введіть 7 для значення приросту або інтервалу між датами. Після цього закрийте функцію та введіть RETURN і DateList .
Потім ви побачите таблицю, що містить сім значень, починаючи з 5 травня і повертаючись назад із кроком у сім.
Тепер ви помітите, що створено занадто багато дат, ніж вам потрібно. У вихідному зразку звіту останньою датою, яка відображалася з тими самими датами показу та датою, було 31 березня.
Щоб виправити це, ви можете змінити значення змінної DatesToShow на 5 або відняти 1 від 6. У цьому прикладі 1 віднімається від 6.
Після цього ви побачите, що значення закінчуються 31 березня.
Введення дат у контекст фільтра
Далі вам потрібно використати та додати ці дати в контекст фільтра дат. Вам також потрібно обчислити суму продажів у контексті фільтра. Отже, скопіюйте синтаксис GENERATESERIES і поверніться до свого вимірювання.
У мірі додайте нову змінну та введіть DatesToShow . Потім прирівняйте цю змінну до синтаксису GENERATESERIES . Змініть змінні всередині синтаксису з SelectedDate на DisSelectedDate та DatesToShow на ValuesToShow .
Нарешті, створіть змінну для результату. Прирівняйте його до функції CALCULATE над Total Sales і DatesToShow, щоб додати всі дати, отримані з синтаксису GENERATESERIES , у контекст фільтра. Після цього введіть результат у функцію RETURN .
Тепер ви побачите, що матриця не відображатиме дати, які вимагає код DAX. Якщо ви перенесете в матрицю показник «Загальні продажі», ви побачите, що код повертає саму суму продажів.
Проблема з мірою полягає в тому, що дата, створена в синтаксисі GENERATESERIES , має походження даних із відключеною таблицею дат. Це означає, що таблиця «Дата» не пов’язана з таблицею «Продажі». Ось чому, коли список дат було застосовано в контексті фільтра, він не включав таблицю Продажі.
Вам потрібно використовувати функцію для створення віртуальних зв’язків і застосування контексту фільтра.
Використання TREATAS для виправлення дати в матриці LuckyTemplates
Значення, отримані з синтаксису GENERATESERIES, потрібно обробляти так, ніби вони були частиною вихідної таблиці Date. По суті, це створення лінії зі стовпцем Date таблиці Date, яка знаходиться в моделі даних.
Тому в змінній Result введіть TREATAS після таблиці Total Sales і надайте аргументи. Для першого аргументу вкажіть стовпець або таблицю, які не мають зв’язку. У цьому випадку використовується стовпець DatesToShow .
Для другого аргументу вкажіть стовпець, до якого потрібно зіставити походження стовпця в першому аргументі. У цьому прикладі використовується стовпець Дата з таблиці Дати.
Однак, навіть з виправленнями в коді, стовпець вимірювання в матриці все одно не відображатиме правильні значення під час використання роздільника. Ви також можете помітити, що значення всередині стовпця повторюються.
Проблема полягає в тому, як був написаний код. TREATAS застосовує всі значення до контексту фільтра тазамінює існуючий контекст фільтра на вибрану дату з усіма значеннями, які були отримані з функції GENERATESERIES .
Використання функції KEEPFILTERS замість TREATAS
Щоб переконатися, що фільтр вставляється у фільтр без перевизначення існуючого контексту фільтра, потрібно скористатися функцією KEEPFILTERS . змінює семантику фільтрації CALCULATE .
Введіть KEEPFILTERS перед функцією TREATAS і підтвердьте вимірювання.
Тепер ви побачите, що значення в стовпці «Вимірювання» не повторюються.
Якщо розгорнути місяці травень і квітень, ви побачите, що значення в стовпці «Вимірювання» дорівнюють значенням у стовпці «Загальний обсяг продажів».
Видаліть показник «Загальні продажі» з матриці та виберіть число в розділювачі «Дати для показу». Тоді ви побачите еквівалентну кількість дат, які відображаються в матриці.
Виправлення проблем із відсутніми датами в матриці LuckyTemplates
Ще одна проблема з цим звітом полягає в тому, що коли ви вибираєте 8 у розділювачі DatesToShow , матриця не змінюється.
Якщо вибрати 9 у розділювачі, матриця показуватиме лише 8 дат. Ви також помітите, що 17 березня відсутнє у списку дат.
Причина полягає в тому, що в деякі дні в таблиці Date немає відповідних транзакцій у таблиці Sales. Таким чином, міра повертає порожнє значення для цих дат. Оскільки він повертає порожнє значення, код, який виконується за матрицею, видаляє порожні рядки з результату.
Потім LuckyTemplates використовує повернутий результат для заповнення матриці. Отже, оскільки деякі дні повертаються порожніми, ви не можете побачити продажі та записи цих днів у матриці.
Якщо ви хочете показати щось за дні без продажів у ваших даних, поверніться до вимірювання та видаліть синтаксис CALCULATE .
Використання DAX для вирішення питання про відсутню дату в LuckyTemplates
Створіть лінійку даних, написавши TREATAS над стовпцями DatesToShow і Date таблиці Dates . Потім перевірте, чи всі дати, повернуті функцією TREATAS , включені в контекст фільтра.
Звідти розділіть виконання за кількома змінними. Змініть назву змінної з Result на CreateDataLineage , щоб показати, що вона зберігає результат TREATAS .
Потім створіть ще одну змінну, яка буде містити всі дати, видимі в контексті фільтра, що надходить із матриці. Введіть VisibleDate як назву змінної та використовуйте її замість стовпця Date .
Наступне, що потрібно зробити, це створити стовпець над результатом функції TREATAS , який міститиме суму продажів. Напишіть DatesWithSales як назву змінної та використовуйте замість змінної CreateDataLineage .
Усередині функції створіть новий стовпець і назвіть його Sales Amount із показником Total Sales у контексті рядка, щоб ініціювати перехід контексту.
Після цього створіть змінну, яка перевірятиме, чи всі дати, які зберігаються у змінній DatesWithSales , включено в контекст фільтра. Введіть IsDateInFilterContext як ім’я змінної та використовуйте функцію.
Звідти напишіть DatesWithSales як перший аргумент функції. Далі введіть Dates[Date] IN VisibleDate як другий аргумент, щоб перевірити, чи включено дату, що міститься в таблиці DatesWithSales , у змінну VisibleDate .
Остання змінна, яку вам потрібно створити, це Result . Використовуйте функцію над змінною IsDateInFilterContext . Напишіть [@Sales Amount] + 0 , щоб включити дні, які раніше не були включені.
Після всього цього ви побачите в матриці відсутню дату, 17 березня.
Використання +0 у вихідній мірі
Попередні кроки показали, як побудувати показник, щоб включити всі дати, які не мають транзакцій, у таблицю фактів. Тепер, якщо ви використовуєте + 0 у вихідній мірі, яку ви створили, усі значення в стовпці «Міра» будуть 0.
Причина полягає в тому, що змінна Result містить пусте значення або суму продажів. Отже, якщо ви додаєте 0, ви замінюєте пробіл на 0. Пам’ятайте, що зведені стовпці видаляють порожні рядки з набору даних. Поверніть їх до LuckyTemplates, щоб вони могли показувати лише обмежені рядки, а не порожні.
Але оскільки додано 0, стовпець підсумку змушений зберігати рядки. Потім він повертає таблицю, яка містить усі дати, які існують у таблиці Dates, і показує нуль, якщо він застосовний або якщо він порожній.
Це причина, чому вам потрібно переписати міру таким чином, щоб вам потрібно було лише додати 0 до дат, видимих у контексті фільтра та включених у змінну DatesToShow .
Висновок
Щоб створити звіт із даними, який дає змогу вибрати конкретну дату в , потрібно використовувати обчислені таблиці та. Функції та показники DAX мають бути написані таким чином, щоб можна було легко отримати результати.
У цьому посібнику обговорюватимуться змінні та вирази в редакторі Power Query. Ви навчитеся правильно їх писати та будувати.
Теплова карта LuckyTemplates — це тип візуалізації, який використовується для відображення щільності даних на карті. У цьому підручнику я розповім, як ми можемо створити один – не пропустіть!
Я збираюся навчити вас справді цікавому прикладу принципу Парето та тому, як створити діаграму Парето за допомогою важливих формул DAX.
Дізнайтеся, як користувацьку гістограму на ринку можна використовувати для порівняння даних і як ви можете створити їх за допомогою прикладів у LuckyTemplates.
Дізнайтеся, як працює функція Power Automate Static Results і чому її корисно додати до найкращих методів створення блок-схем.
eDNA демонструє, як виконувати переклад мови або тексту за допомогою Python і передавати це в LuckyTemplates. Підручник LuckyTemplates Python.
У цьому підручнику ви дізнаєтеся, як використовувати Gauge Bullet Graph для створення діаграми Ганта в LuckyTemplates Report Builder.
У цьому підручнику ви дізнаєтесь, як створити тривимірну (3D) точкову діаграму за допомогою Python у LuckyTemplates.
Ефективне звітування LuckyTemplates – огляд сеансу та завантаження ресурсу
Аналіз нових клієнтів за допомогою LuckyTemplates – наступна подія лише для учасників