Труба в R: підключення функцій за допомогою Dplyr
У цьому підручнику ви дізнаєтесь, як об’єднати функції разом за допомогою оператора каналу dplyr мовою програмування R.
Я покажу вам, як оновлювати набір практичних даних кожного разу, коли ви виконуєте оновлення . Ви можете переглянути повне відео цього підручника внизу цього блогу.
Якщо ви справді хочете вдосконалити свої навички DAX, найкращий шлях — використовувати його та застосувати на практиці. А для цього вам потрібен практичний набір даних, який допоможе візуалізувати й працювати над можливими сценаріями реального життя.
Проблема з практичними наборами даних полягає в тому, що дані зазвичай статичні . Для ефективної практики вам потрібно створити враження, що дані живі.
Зміст
Налаштування шляху до файлу для набору практичних даних
Для моїх зразків даних у мене є файл Excel, що містить дані про продажі за 2014, 2015 та 2016 роки.
Це дані, які мені потрібно оновити.
Розташування документа можна знайти тут, на панелі швидкого доступу.
Мені це потрібно, щоб налаштувати параметр для мого шляху до файлу. Тому я збираюся скопіювати це розташування документа.
Праворуч від неї є точка доступу до панелі швидкого доступу.
Коли я натискаю це, я отримую цей екран.
Тому я перейду до пункту «Усі команди» , а потім виберу «Розташування документа» . Додайте його на панель швидкого доступу та натисніть OK.
Зараз я піду вщоб створити параметр, який зберігатиме шлях до мого файлу. Цей крок важливий, оскільки він дозволяє відновити всі запити всередині моделі, якщо інший користувач змінить розташування файлу.
Тому я створю новий параметр .
Я збираюся назвати це FileLocation .
У розділі «Текст» я виберу «Текст» . А для поточного значення я вставлю в місце документа, яке скопіював раніше.
Я збираюся створити новий запит.
Тоді я виберу зразки даних, які використовуватиму як свій практичний набір даних.
Тут з’явиться кілька різних таблиць, оскільки я маю дані про продажі за 2014, 2015 та 2016 роки. Мені просто потрібно вибрати першу, тобто Sales_2014 .
Тепер, коли я вибрав дані Sales_2014, настав час змінити це жорстко закодоване розташування файлу на динамічне розташування файлу .
Я зайду в розширений редактор і виберу все, що пов’язано з розташуванням файлу .
Потім я зміню це на створений раніше параметр FileLocation .
Потім я натисну «Готово», щоб зафіксувати ці зміни в запиті Sales_2014.
Створення папки підготовки даних
Переглядаючи прикладні кроки для запиту Sales_2014, я клацну крок навігації . Це показує мені, що він посилається на крок Source .
Він також посилається на Sales_2014 , який показано як таблицю . Це також показує, що він витягує дані зі стовпця "Дані".
Тепер дозвольте мені поглянути на наступний крок Джерело .
Крок «Джерело» показує мені все, що міститься в моєму файлі Excel . Якщо я перевірю ці координати, я побачу Sales_2014 , а під Kind написано Table .
Коли я шукаю стовпець даних, він показує об’єкт Table , який було вилучено.
Тому я можу скопіювати цей запит, щоб отримати дані за 2015 рік . Для цього мені потрібно просто клацнути правою кнопкою миші на Sales_2014 і вибрати Дублювати.
Потім я повернуся до кроку навігації.
Поміняю той рік з 2014 на 2015.
Я також перейменую це тут у розділі «Властивості». Я назву це Sales_2015.
Цього разу я дублюю Sales_2015.
Потім я повернусь до кроку навігації та зміню рік на 2016.
Тепер я маю повні дані про продажі. Але ці запити не слід завантажувати в мою модель . Мені просто потрібно клацнути правою кнопкою миші на кожному з них і зняти прапорець Увімкнути завантаження .
Тепер я збираюся вибрати всі запити та помістити їх в одну папку, щоб зробити все більш упорядкованим.
Я назву цю папку Data Prep .
Отримання компенсації дня
Зразок даних у розділі «Підготовка даних» буде статичним . Це означає, що перша та остання дати ніколи не зміняться .
Тож я перейду до Sales_2016 і відсортую стовпець «Дата замовлення» в порядку спадання , щоб отримати останню дату з цього набору даних .
Остання дата в цьому наборі даних – 31 грудня 2016 року .
Тепер я створю новий запит.
Потім я перевірю, яке зміщення днів від останньої дати в наборі даних до сьогодні. Це означає, що мені потрібно дізнатися, що таке сьогодні. Для цього я скористаюся функцією DateTime.FixedLocalNow . Це дасть мені дату та час з машини, на якій я працюю.
Але мені тут не дуже потрібна частина часу. Мені потрібна лише частина дати цього значення.
Отже, я збираюся отримати дату за допомогою Date.From .
Потім із цього значення я збираюся відняти останню дату в моєму наборі даних . Оскільки дані статичні, я можу використовувати внутрішнє значення дати . Отже, це #дата, а потім посилання на 31 грудня 2016 року.
Тепер мені потрібно отримати число з цієї різниці . Тому я додам Number.From і закрию його дужкою. Потім натисніть enter.
Я перейменую це на DayOffset .
Налаштування динамічних діапазонів дат
Мені також потрібні динамічні діапазони дат для моєї таблиці дат. Я почну з того, що клацну правою кнопкою миші папку Data Prep і створю новий порожній запит.
Потім я попрацюю над датою початку своєї таблиці дат.
Я завжди хочу 1-й день року як дату початку. Тож я поставлю знак рівності та використаю функцію Date.StartOfYear .
Оскільки мені потрібно надати цьому значення, я збираюся компенсувати це за допомогою Date.AddDays .
Тоді я знову використаю власне значення дати та використаю 1-шу дату в своєму наборі даних , тобто 1 червня 2014 року.
Мені також потрібна кількість днів, яку я розрахував у моєму DayOffset , тому я збираюся додати це.
Коли я натискаю клавішу Enter, з’являється 1 січня 2017 року . Це буде перша дата в моїй таблиці дат.
Я перейменую це на fxStartDate .
Тепер я можу встановити дату завершення. Я збираюся скопіювати цей синтаксис, який використовував у даті початку.
Я створю новий порожній запит.
Потім перейменуйте його на fxEndDate .
Потім я збираюся вставити синтаксис із моєї дати початку .
Замість StartOfYear я зміню це на EndOfYear.
Я також збираюся використовувати останню дату мого набору даних , тобто 31 грудня .
Коли я натискаю enter, повертається 31 грудня 2020 року .
Створення єдиної таблиці продажів
Я збираюся об’єднати 3 таблиці в одну таблицю Sales . Для цього я створю новий запит.
Я називатиму це моєю таблицею продажів .
Потім я об’єднаю Sales_2014, Sales_2015 і Sales_2016 в одну таблицю.
Я знаю, що ви можете зробити це через стрічку, але також є можливість зробити це безпосередньо в рядку формул. Я виберу 2й варіант.
Я почну з Table.Combine .
Table.Combine вимагає списку таблиць . Тож я додам ініціалізатор списку , тобто ті фігурні дужки , а потім дам назву 3 запитам . Після цього натисніть enter.
Перетворення стовпця дати замовлення
Тепер, коли у мене є більшість необхідних мені елементів, я збираюся згенерувати ключову частину синтаксису, яку я буду використовувати пізніше для завершення мого динамічного набору практичних даних.
Я почну з вибору двох стовпців із числами. Я можу використовувати Індекс регіону доставки та Індекс опису товару . Зі свого боку, ви можете натиснути Shift або Ctrl, щоб вибрати обидва стовпці.
На вкладці «Трансформація» я виберу «Абсолютне значення» .
Якщо я подивлюся на рядок формул, він покаже функцію Table.TransformColumns . Це ключ до остаточного рішення.
Функція отримує список списків трансформацій . Як бачите, тут є 2 списки, вкладені один в одного.
Він посилається на назву стовпця як текст. Ось чому тут у 1-му наборі посилалися на Індекс регіону доставки .
Потім додається крок трансформації .
Він робить те саме в окремому списку для стовпця Індекс опису продукту .
Зараз я піду до .
Я не хочу абсолютних значень . Тож перше, що я збираюся зробити, це змістити свою дату . Для цього я створю функцію під назвою fxUpdateDate . Він використовуватиме поточну дату, яку я введу як cDate .
Потім я знову використаю функцію Date.AddDays , яка також використовує cDate . Я також використаю DayOffset, створений раніше.
Все, що робить fxUpdateDate , це бере дату. Отже, якщо я передам це у функцію Table.TransformColumns , вона почне перевіряти кожну записану дату.
Отже, якщо я, наприклад, працюю над першим рядком тут, він вважатиме 1 червня 2014 року cDate.
І кожного разу, коли функція викликається, вона додаватиме DayOffset, який я створив.
Тепер крок Table.Transform відображається в Calculated Absolute Value .
Я збираюся спочатку перейменувати його та назвати його UpdateOrderDate .
Цей крок UpdateOrderDate включає мій Table.TransformColumns, який дорівнює Source.
Початкова таблиця в списку є індексом регіону доставки . Але немає потреби це трансформувати. Тож я збираюся змінити цей перший стовпець на стовпець OrderDate .
Тут також зазначено, що перетворення відбуватиметься в абсолютних значеннях.
Оскільки я цього не хочу, я збираюся змінити це на fxUpdateDate .
Тип також не буде абсолютним значенням, тому мені також потрібно змінити цю частину.
Я зміню це на дату .
Мені потрібна лише одна трансформація, тому я видалю другий список разом із кроком трансформації, який постачається з цим набором…
…тож це лише одне перетворення для стовпця OrderDate.
Оскільки я перейменував крок на «Обчислене абсолютне значення», мені також потрібно змінити це в моєму операторі in.
Тепер він також показує UpdateOrderDate .
Отже, стовпець OrderDate тепер буде викликати цю функцію для кожного запису в Table.TransformColumns .
Переглядаючи стовпець «Дата замовлення», я бачу, що його оновлено.
І якщо відсортувати це в порядку спадання, поточною датою буде 7 липня 2020 року .
Тож я збираюся видалити цей крок сортування , тому що він мені насправді не потрібен. Я зробив це лише для того, щоб перевірити, чи поточна дата також була оновлена.
Застосування інтелекту часу за допомогою коду M
Моя модель пов’язана з даними про продажі . Оскільки я збираюся провести деяку розвідку часу, мені знадобиться таблиця дат .
Тож я піду до. У презентації M-коду я переходжу до теми Розширена таблиця дат .
Прокрутіть до самого верху сторінки та скопіюйте весь код .
Повертаючись до своєї моделі, я збираюся створити новий порожній запит і вставити цей код M у . Натисніть Готово.
Я перейменую цей запит на fxCalendar .
Для своїх параметрів я використовуватиму 1 січня для StartDate і 31 січня для EndDate . Потім натисніть Виклик.
Коли таблиця з’явиться, я перейменую її на Дати .
Пам’ятайте, що я вже створив початкову та кінцеву дати, переглянувши першу дату у зразку набору даних і компенсувавши її за допомогою DayOffset. Отже, fxStartDate тут відображається як 1 січня 2017 року .
Що стосується fxEndDate, він повертає 31 грудня 2020 року .
Я можу повернутися до таблиці «Дати» й оновити там також крок «Джерело» .
Він перераховує параметри в порядку їх виклику. Перший параметр має вказувати дату початку .
Я збираюся змінити це на fxStartDate .
Я також збираюся замінити другий параметр.
Я вставлю fxEndDate .
Коли я натискаю Enter, трансформація завершена. Тепер у мене є повністю оновлений набір практичних даних, який завжди залишатиметься актуальним.
Я просто натисну «Закрити та застосувати» , щоб зафіксувати всі ці кроки.
Висновок
Як я вже згадував раніше, наявність власного динамічного набору практичних даних безперечно підвищить рівень вашої гри, коли мова йде про LuckyTemplates. Це дозволяє вам практикувати свої навички та знання, вдаючи, що ви працюєте над реальним сценарієм.
Якщо ви хочете дізнатися більше про те, як зробити ваші початкові та кінцеві дати динамічними, особливо для практичного набору даних, який ви використовуєте, ви можете відвідати форум LuckyTemplates. Там багато розмов про це, а також про інші актуальні теми. Ви навіть можете знайти інші підходи, які підійдуть вам.
Все найкраще,
Меліса
У цьому підручнику ви дізнаєтесь, як об’єднати функції разом за допомогою оператора каналу dplyr мовою програмування R.
RANKX від LuckyTemplates дозволяє повернути рейтинг певного числа в кожному рядку таблиці, який є частиною списку чисел.
Дізнайтеся, як розібрати файл PBIX, щоб витягти теми та зображення LuckyTemplates із фону та використовувати їх для створення звіту!
Шпаргалка формул Excel: Посібник середнього рівня
Календарна таблиця LuckyTemplates: що це таке та як ним користуватися
Дізнайтеся, як інсталювати мову програмування Python у LuckyTemplates і як використовувати її інструменти для написання кодів і відображення візуальних елементів.
Дізнайтеся, як обчислювати динамічну маржу прибутку за допомогою LuckyTemplates і як ви можете отримати більше інформації, глибше досліджуючи результати.
Дізнайтеся, як правильно сортувати поля зі стовпців розширеної таблиці дат. Це хороша стратегія для складних полів.
У цій статті я поясню, як знайти найпопулярніші продукти для регіону за допомогою обчислень DAX у LuckyTemplates, включаючи функції TOPN і CALCULATE.
Дізнайтеся, як використовувати вимірювання сміття для позначок низької потужності, які ви хочете ефективно включити у свою модель даних.