Dax что это за программа

Содержание

Что такое язык DAX от Microsoft?

DAX( Data Analysis Expressions) — это язык функций и формул, который входит в состав нескольких приложений от компании Microsoft, а если быть точнее, то в приложение Power BI, в надстройку Excel (Powerpivot) и в SSAS Tabular (SQL Server).

MS DAX — это функциональный язык запросов, который целиком и полностью состоит только из встроенных в него функций. В DAX вы не сможете создать какие-либо свои функции, циклы или что-то еще, что можно создавать в языках программирования. Ведь DAX — это не язык программирования, это именно функциональный язык от Microsoft, при помощи которого, у вас имеется возможность на основе встроенных в него функций создавать свои формулы для расчета необходимых вычислений, обогащая вашу исходную модель данных. И на основе всего этого, в итоге, создавать те самые интерактивные отчеты в Power BI и Excel (Powerpivot).

Если говорить кратко, то DAX позволяет обращаться (создавать запросы) к исходной модели данных, брать из нее необходимые отфильтрованные данные и производить с ними вычисления. А затем, уже на основе этих вычислений, у Вас появляется возможность создавать интерактивные BI отчеты.

Язык DAX и Excel (Powerpivot)

Тем из вас, кто ранее пользовался обычным Excel, а сейчас переходит к работе с языком DAX, то для вас DAX может показаться достаточно знакомым и похожим на Excel. И это действительно так. Дело в том, что язык DAX изначально зародился из под Excel, а конкретнее, в 2010 году его представили на свет в рамках языка функций и формул для надстройки Excel — Power Pivot. И создатели DAX сделали все возможное, чтобы пользователям стандартного Экселя было легко перейти к работе с DAX. В DAX достаточно много функций, которые так или иначе похожи, или чем-то напоминают соответствующие функции в Excel.

Язык DAX и Power BI

Также, есть небольшое различие в языках DAX используемых в разных приложениях, например таких, как Power BI и Excel (Powerpivot). А конкретно, в DAX в Power BI имеется возможность создавать физически и сохранять в модели данных вычисляемые таблицы, чего в Excel (Powerpivot) по крайней мере, сейчас, пока сделать не получится. В Excel можно создавать некие виртуальные таблицы в составе самих формул DAX, но создать физически вычисляемые таблицы и потом сохранить их в модели данных нельзя. Поэтому, если вы только начинаете изучать язык DAX, то лучше всего, по моему мнению, это делать в приложении Power BI: во-первых, в Power BI в DAX можно легко создавать в модели данных вычисляемые таблицы; а во-вторых, само удобство использования DAX в Power BI намного лучше, ведь Power BI — это следующий технологический уровень в BI аналитике, после Excel, и именно поэтому, там процесс работы намного удобнее.

Формулы DAX включают функции, операторы и значения для выполнения расширенных вычислений и запросов к данным в связанных таблицах и столбцах в табличных моделях данных. Они используются в показателях, вычисляемых столбцах, вычисляемых таблицах и безопасности на уровне строк.

Рассмотрим основные атрибуты по порядку:
1. Меры

Меры используются в некоторых наиболее распространенных методах анализа данных. Простые итоговые значения, такие как суммы, средние значения, минимумы, максимумы и счетчики, можно задать в области Поля. Вычисленные результаты мер всегда изменяются в ответ на взаимодействие с отчетами, что обеспечивает быстрый и динамический просмотр данных.

2. Вычисляемый столбец

Вычисляемые столбцы похожи на меры в том, что они строятся на формуле DAX, но их использование отличается. Меры часто используются в области Значения визуализации для вычисления результатов на основе других полей. Вычисляемые столбцы используются в качестве новых полей в строках либо в области оси, условных обозначений или группы визуализаций.

3. Вычисляемая таблица

В большинстве случаев вы создаете таблицы путем импорта данных в модель из внешнего источника данных. Но вычисляемые таблицы позволяют добавлять новые таблицы на основе данных, уже загруженных в модель. Вместо запроса и загрузки значений в столбцы новой таблицы из источника данных вы создаете формулу на языке DAX, которая определяет значения таблицы.

Описание миссии языка DAX

Итак, подводя итог всей статьи про краткое описание и знакомство с DAX, можно описать его некое предназначение: данный язык функций и формул является неким мостом между вашей исходной моделью данных и тем интерактивным отчетом, который вы в итоге хотите видеть и анализировать; этот функциональный язык запросов дает возможность обогатить исходную модель данных, создавая в ней новые вычисляемые таблицы, столбцы и разные меры (вычисления, на основе которых вы и будете изучать и анализировать всю информацию).

Источник

AXAPTA vs 1C

Вступление. Из чего выбирать

У любой работающей компании есть ERP, даже если она(компания) об этом не знает. И рано или поздно приходится задумываться о её замене. Если вы, просчитав стоимость, отказываетесь от замены, то это тоже результат, возможно, не худший.

Хорошим тоном считается предложить руководству хотя бы два варианта для выбора. Выбор между разными конфигурациями 1С возможен, но почему бы не воспользоваться случаем и не рассмотреть более серьезные системы, хотя бы в плане самообразования. Опять же и у руководства развеются иллюзии (если они есть), что где-то за месяц напишут безглючную быструю программу.

Что же рассматривать при наличие 100-1000 пользователей и денег у компании? Даже конкретизируем: дистрибуция 200 одновременно работающих пользователей. Давайте смотреть.
подробности ниже

Первичная оценка Аксапты

Что в ней подкупает на первый взгляд:

— Цена приемлема. Проект на 200 пользователей со стандартным функционалом продавцы обещают запустить за год за 15-20 млн. руб. под ключ. по утверждениям продавцов. Дорого? Ну посчитайте, сколько будет стоить проект «под ключ» от серьезного франчайзи 1С. Почасовка 2-2,5 т.р примерно одинакова и для Аксапты и для 1С. Стоимость программирования в 1С ниже, но и функционала там меньше. “Под ключ” на базе 1С ERP 2.х будет 8-15 млн.

— Специалисты: хорошее понимание предметной области продажниками; привлечение грамотных разноплановых консультантов ещё на этапе продажи, каждый из которых специализируется в 1-2 конкретных областях; руководители проектов — с опытом запуска.

— Привлекательность для инвесторов. Всегда проще продать акционерам компанию с международно признанной системой учета, да и вкладываться в такую компанию будут охотнее

— Главное же — функционал. Все-таки в DAX вложено человеко-часов поболее, чем в 1С. Ещё в начале двухтысячных в ней уже была реализована трехзвенная архитектура, которая в 1с появилась лет 5 назад.

На первый взгляд достаточно. Для детального же анализа в области ИТ есть бесспорный авторитет: Магический квадрант – Gartner. Гуглим картинку «gartner magic quadrant erp 2015»

Отступление. Сравнение функционала

Магический квадрант, конечно, здорово. Но самый лучший эксперт даст лишь общие вещи. Сравнивать функционал надо именно для вашей компании с учетом прогнозов по росту масштаба и потребностей. Писать 10 страничный трактат с подробным сравнением нет смысла — вдумчиво читать никто не будет. Если вам доверяют, то читать ваши трактаты руководство не предрасположено, если нет, то тем более. Из собственного опыта замены ERP: 2 раза выбирал сам, 2 раза вместе с руководством, а 5 раз выбирали само руководство фактически без участия ИТ. Причины выбора были разные: у конкурентов такое же, учился вместе с продавцом, жена комдира решила, что так будет правильнее (для мужа) и т.д.

Кроме того слишком быстро все меняется, особенно в 1С– сравните УТ10 и УТ11 между которыми 5 лет. Да и точное понимание достаточности функционала придет только после этапа обследования процессов и предварительного ТЗ. Тем не менее сравнение вы обязаны сделать. Хотя бы для ревизии существующего функционала и самообразования.

Результаты.Стоимость проекта и владения

Перейдем к главному, дабы не томить. Аксапту мы внедрили. После запуска прошло полгода и теперь можно оценить результаты и программу без эмоций.Дистрибьюция 200 пользователей. 28 млн. руб. 2 года. Стоимость поддержки – 500 тыс. руб/мес. Стоимость владения 1,5 млн. руб./год. По моим оценкам на работу с программой уходит на 25% больше времени у пользователей. Подробности только в личке: atseparate@gmail.com

Как вы понимаете эти цифры и есть основной минус. Откуда взялись такие суммы — смотри ниже

Основные минусы Аксапты

Сразу скажу – 1С я знаю больше и какие-то возможности Аксапты я, конечно, упустил. С другой стороны особого пиетета я перед 1С не испытываю. Например, два раза запускал WMS на стороннем ПО и ни разу не пожалел.

Стоимость программы

Лицензии не дешевые. Это не 1С и 6.т.р на пользователя. Лицензии АХ – 20 — 150 т.р. в зависимости от функционала пользователя. Ну и не забудьте добавить 20% от стоимости этих лицензий в год – Вы же хотите обновляться. Даже если не хотите, вас особо и не спросят.

Слишком большой функционал

Большой функционал обычно снижает стоимость владения и увеличивает скорость изменения процессов, т.к. отпадает необходимость программировать. Но слишком большой функционал может иметь и обратный эффект. Да, программировать не надо, но производство без внешних консультантов и проекта, а это 3-6 месяцев, вы сами не запустите — слишком много неявных граблей.

Вторая составляющая — неудобство для пользователя. Чем больше функционала, тем больше интерфейса. Да, можно настроить грамотно роли. Но, например, ненужные поля в карточке товара никуда не денешь. А их где-то на 150 больше, чем в 1С УТ. Про удобство расположения этих полей и перевод поговорим позже.

По этой причине, и по причине озвученной пунктом ниже, работа пользователя замедляется процентов на 25%, а разборки с проблемами — раза в полтора.

НЕЭРГОНОМИЧНОСТЬ

Как работает 1С. Заполняем основные справочники, например, товаров и контрагентов. И делаем документы (отражаем хозяйственные операции), которые хранятся в журнале. Получаем отчеты. Если нужно что-то более сложное используем обработки или лезем в настройки, но лучше при любой непонятной ситуации зовем программиста. ВСЕ.

Причем такое разделение: справочники, документы (и их список или журнал), отчеты не только в 1С. но только не в аксапте. Объяснение такое — её проектировали специалисты по базам данным, видимо, не для пользователей, и вообще не для людей. И что мы получаем в результате Предположим пользователю нужен список накладных: и он его находит — в трех местах с разным набором полей, лучший в пункте запросов. В то же время пункта со справочником стран нет Можно войти только через ссылки, если пользователь знает, как их включить. Полностью раскрытый раздел взаиморасчетов с поставщиками, влезает только на три экрана. И это один из 30 разделов.

Не убедил? Не проблема. Все мы знаем, что в торговле два основных действия: продажа и получение денег. Поэтому, нужен идеальный контроль остатков товаров и взаиморасчетов с контрагентами.

Давайте посмотрим материальную ведомость по товарам, т.е отчет, показывающий движение товара в денежном и количественном измерении, в т.ч после каждого документа. Мы его найдем. Но не в запасах, и не складе, а в управление ассортиментом — сведения о продукте — фильтруем нужный товар — переходим на закладку проводки. При условии успешного прохождения этого квеста, мы не увидим ни остатка на конец документа, ни даже номера накладной по которой товар отгружался или поступал.

Это ещё не все. Вы не посмотрите сколько было товара вчера, не хранит АХ этих данных. Живи здесь и сейчас, так сказать. Можно получить эти результаты, но через такие сложности, что лучше про это забыть.

Про отчётность лучше вообще не вспоминать. Её много и она разная, и по интерфейсам и по цифрам. OLAP в Excel, SQL Server Reporting Service, Report Manager. Говорят ещё были встроенные отчеты и Crystal report.

В jбщем не для людей её делали, иначе не объяснить, почему у программы нет выбора периодов в отчетах.

И это не лично моё мнение. До этого времени я не представлял насколько пользователи могут быть недовольны новой программой. И поскольку я запускал и сырые версии 1С и WMS под Oracle — думал, что видел все, пока не поучаствовал в запуске Аксапты.

Высокая стоимость программирования

Вроде функционала достаточно и много программирования не требуется. Но это только на первый взгляд. У нас на кастомизацию ушло примерно четверть стоимости проекта, а для дистрибуции b2b, 7 млн. на программирование многовато.

Откуда же взялась такая цифра.

Гораздо больше времени уходит на программирование из-за убогой среды разработки. Частично можно использовать Вижуал Студио. Встроенная же среда обработки хуже конфигуратора 7.7, не говоря уже про 8-ку. Более убогой среды для ООП я не встречал.

Гораздо больше времени уходит на программирования из-за самого содержимого программы. Ничего не имею против ООП и даже осмеливаюсь предсказать 1С проблемы из за его отсутствия, в будущем, т.к. большой функционал качественно реализовать без классов малореально. Но в Аксапте другая крайность — сами классы унаследованы похоже ещё из 90х. Это конечно здорово – код десятилетней давности заработает и сейчас. Но зачем код из времени, когда про CRM или 3PL никто и не знал. А вот обращение к нужному методу через 10 транзитных родительских классов – сплошь и рядом.

Гораздо дороже обходится труд программистов. ЗП хорошего 1Сника СПб 85 т.р. Аксаптера 120 т.р. Проблема, что их не найти и за эти деньги — мы искали полгода. Кроме того в Аксапте используется подход, консультант ставит задачи, программист программирует. Что в целом верно. Но в штате надо иметь уже, как минимум, двух человек.

Нет нормальной литературы и сообщества. Например, решили вы загрузить большие данные из Эксель. Окей Гугл. Через 15 мин у вас три варианта решения (range, odbc, перебор строк) с готовым на 80% кусками кода для 1С. Для Аксапты же проще самому с нуля написать, или выяснить через пару часов, что есть механизм загрузки из Экселя без программирования, ещё через пару часов понять, что этот механизм вам не подойдет. И в результате сесть программировать на 2 дня.

Внедренцы и руководство

Это основная причина превышения бюджета. Но Аксапту винить в этом сложно, сами виноваты
Подписали договор не с той фирмой. Правда солидных в СПб всего 2. С одной у нас не сложилось по субъективным вещам, с другой “сложилось”. Подписали мы договор, в котором основным пунктом было: “раз в две недели мы выставляем вам счета, а вы их оплачиваете, либо пишите претензию, которую согласовывает исполнитель”. Естественно при почасовке качество и квалификация исполнителей не важно и даже вредно для получателя денег. Чем больше переделок, тем больше исполнитель заработает. Фирма-внедренец начинается на «Ко», и на продажниках с юристами там не экономят.

Слабая команда внедрения. До подписания договора, по нашей просьбе, нам представили команду проекта и их портфолио. Действительно классная команда. Только через два месяца внедряла уже другая команда. И угадайте её уровень исходя из пункта один.

Отсутствие АйТишников от заказчика в команде проекта. И это было не из-за их слабой квалификации. Например, у нас были (именно были) специалисты умеющие обращатся с Профайлером SQL, знающие бухучет лучше внедренцев, но руководству в проекте они оказались не нужны, почему — это отдельный психологический трактат.

Для примера, код в 30 строк, обошелся нам в Аксапте в 55 тыс.руб, и заработал с шестой попытки через 3 недели. Стоимость наших нервов и шестикратного тестирования здесь не учтены

Паритетные пункты

Не все так плохо, есть и моменты, в которых Аксапта сильнее или не хуже 1С

Скорость работы

Исходя из создания программы специалистами по БД, ожидал большего. Но

— бангладорский код сплошь и рядом
— программный код не проходил ревизию с начала двухтысячных
— запросы и вьюшки написаны слишком универсально исходя из большого функционала
— программа куплена для ниши и отношение к ней соответствующее. Например, нет 64х разрядного клиента, поэтому при превышении 2 гигов в оперативке, процесс тупо валится. 1С же и на 10 гигах нормально работает.

Поэтому быстродействие, в целом, одинаковое с 1С, начиная с версии 8.3 в режиме управляемого приложения.

Невозможность корректировок задним числом

У Аксапты этот функционал есть. Ты не можешь изменить проведенный (разнесенный) документ. Ты можешь ввести корректирующий, в т.ч. сторнирующий. Но, ты можешь это сделать задним числом, пока период не закрыт. А период закрывается явно после пересчетов себестоимости, закрытия счетов и расчета курсовых разниц… Т.е. проблема корректировок — организационная, а не программная (Мы за полгода ни месяца до конца не закрыли)

Плюсы

Больший функционал

Функционал конечно больше. И видно, как 1C черпает вдохновение у Майкрософта. WMS, транспорт появились почти одновременно и там и там. Вряд ли это совпадение, и вряд ли, майкрософт воровал идеи у 1С.

Конкретный функционал надо сравнивать для конкретной предметной области. Но возьмем финансы, которые есть в любом бизнесе:

— гибкая настройка финансовых аналитик. Вы можете сказать: сейчас на этих счетах будет аналитика по Территориям, из пользовательской оболочки «создать» и заполнить этот справочник, прикрепить его к нужным счетам и вперед, если не надо автозаполнения
— есть нормальный расчет курсовых разниц (я не про покупку валюты в банке)
— есть возможность вести различные аналитики (например, ЦФО и статьи затрат) и суммы по финансовому и оперативному учету. Хотя не факт, что это плюс
— есть возможность гибкой настройки закрытия счетов, например, затратных, с разнесением по различным показателям.

Кроме самой галочки по функциям важна их проработанность, скорость и удобство. В Аксапте если функция есть, то явных косяков в ней нет, видимо из опасения исков. 1С же часто пишет в буклетах и включает в рабочий релиз функции, которые на практике использовать нельзя.

Удобные фишки

У АХ есть свои находки, которые, надеюсь, скопирует и фирма 1С. Например.
Отборы. В любом списке можно отобрать в любой колонке используя * и другие операторы, работает это мгновенно.

Панель навигации. В ы как в проводнике можете использовать и адреса и навигацию по разделам мышкой.

Возможность войти в программу под любым пользователем, найдя его в списке и нажав одну кнопку.

Возможность персонализации под себя. Например, любое существующий реквизит справочника вы можете вывести в список. В 1С это возможно только используя групповую обработку или универсальный журнал документов.

Выводы.

Первый вывод тривиален. Основные проблемы не в программе, а в людях её внедряющих и принимающих решения о том что и как внедрять. В госсекторе мотив таких неоптимальных решения понятен. В коммерческом же основной мотив — политические игры, например из-за желания быть более незаменимым для руководства. Участвовать в них или нет — решать вам.
Второй вывод тоже очевиден, но менее учитываем при внедрении. Программа должна соответствовать нужному вам функционалу и масштабу. Вы же не ведете свой личный фин учет в 1С, оформляя приходные и расходные кассовые ордера, а жену заставляя делать авансовые отчеты.Для этого есть более простые программы

Поэтому ERP должна быть “навырост”, но если вам предложат бесплатный SAP для компании с 50 пользователями, то дешевле отказаться.

Источник

Общие сведения о DAX

DAX — это язык формул, используемый в Analysis Services, Power BI и Power Pivot в Excel. Формулы DAX состоят из функций, операторов и значений и предназначены для выполнения сложных вычислений и запросов к данным в связанных таблицах и столбцах в табличных моделях данных.

Эта статья — лишь введение в наиболее важные понятия в DAX. Язык DAX в ней описывается в той форме, в которой он используется во всех соответствующих продуктах. В некоторых продуктах или сценариях некоторые функциональные возможности могут быть неприменимы. См. сведения о реализации DAX в конкретном продукте в документации по нему.

Вычисления

Формулы DAX используются в мерах, вычисляемых столбцах, вычисляемых таблицах и для обеспечения безопасности уровня строк.

Меры — это динамические формулы вычисления, результаты которых меняются в зависимости от контекста. Они применяются в отчетах, поддерживающих объединение и фильтрацию данных модели по нескольким атрибутам, например в отчетах Power BI и сводных таблицах и сводных диаграммах Excel. Меры создаются с помощью строки формул DAX в конструкторе моделей.

В формуле в мере могут использоваться стандартные статистические функции, автоматически создаваемые с помощью автосуммирования, например COUNT или SUM, либо вы можете определить собственную формулу с помощью строки формул DAX. Именованные меры можно передавать в качестве аргументов в другие меры.

При определении формулы для меры в строке формул в компоненте подсказки отображается предварительный просмотр будущих результатов во всем текущем контексте, но в других местах результаты не обновляются сразу же. Результаты вычисления (отфильтрованные) не отображаются немедленно потому, что результат меры нельзя определить без контекста. Для вычисления меры требуется клиентское приложение создания отчетов, которое может предоставить контекст, необходимый для получения данных для каждой из ячеек, а затем вычислить выражения для ячеек. Таким клиентом может быть сводная таблица или сводная диаграмма Excel, отчет Power BI или табличное выражение в запросе DAX в SQL Server Management Studio (SSMS).

Независимо от клиента для каждой ячейки в результатах выполняется отдельный запрос. Это означает, что каждое сочетание заголовков строки и столбца в сводной таблице или каждый набор срезов и фильтров в отчете Power BI дает особое подмножество данных, на основе которых вычисляется мера. Например, рассмотрим следующую очень простую формулу для меры.

Когда пользователь помещает меру TotalSales в отчет, а затем помещает столбец «Категория продукта» из таблицы «Продукт» в окно «Фильтры», сумма продаж вычисляется и отображается для каждой категории продуктов.

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

Вычисляемые столбцы

Вычисляемый столбец — это столбец, добавляемый в существующую таблицу (в конструкторе моделей), для которого затем создается формула DAX, определяющая значения в столбце. Если вычисляемый столбец содержит допустимую формулу DAX, значения вычисляются для каждой строки сразу после ввода формулы. Затем значения сохраняются в модели данных в памяти. Например, в таблице дат в строке формул вводится следующая формула:

Для получения значения для каждой строки в таблице берется значение из столбца Calendar Year (Календарный год) в той же таблице дат, добавляется пробел и заглавная буква Q, а затем добавляется значение из столбца Calendar Quarter (Календарный квартал) в той же таблице дат. Результат для каждой строки в вычисляемом столбце вычисляется и отображается немедленно, например 2017 Q1. Значения в столбце пересчитываются только в том случае, если обновляется таблица, в которой находится столбец, или любая связанная таблица либо если модель выгружается из памяти, а затем загружается снова, как, например, при закрытии и повторном открытии файла Power BI Desktop.

Вычисляемые таблицы

Вычисляемая таблица — это вычисляемый объект на основе выражения формулы, который формируется из всех других таблиц в той же модели или их части. Вместо запроса и загрузки значений в столбцы новой таблицы из источника данных значения таблицы определяются формулой DAX.

Вычисляемые таблицы могут быть полезны в ролевом измерении. Примером может служить использование таблицы дат в качестве таблицы дат заказов, дат отгрузки или дат выполнения в зависимости от связи по внешнему ключу. Создав вычисляемую таблицу для дат отгрузки явным образом, вы получаете отдельную таблицу с полной функциональностью, доступную для запросов. Вычисляемые таблицы также полезны при настройке отфильтрованного набора строк либо подмножества или надмножества столбцов из других существующих таблиц. Это позволяет создавать варианты таблицы для конкретных сценариев, сохраняя исходную таблицу неизменной.

Вычисляемые таблицы поддерживают связи с другими таблицами. Столбцы в вычисляемой таблице имеют типы данных и форматирование и могут относиться к категории данных. Вычисляемые таблицы можно именовать, предоставлять или скрывать так же, как любые другие таблицы. Вычисляемая таблица пересчитывается при изменении или обновлении данных в любой таблице, из которой она берет данные.

Безопасность на уровне строк

При обеспечении безопасности на уровне строк формула DAX должна возвращать логическое значение true или false, которое определяет, какие строки могут возвращаться в результатах запроса, выполняемого членами той или иной роли. Например, рассмотрим таблицу Customers (Клиенты) со следующей формулой DAX для членов роли Sales (Продажи):

Члены роли Sales смогут просматривать данные только по клиентам в США. Результаты статистических вычислений, таких как SUM, также возвращаются только для клиентов в США. Безопасность на уровне строк недоступна в Power Pivot в Excel.

При определении безопасности на уровне строк с помощью формулы DAX создается разрешенный набор строк. При этом доступ к другим строкам не запрещается. Они просто не возвращаются в рамках разрешенного набора строк. Другие роли могут разрешать доступ к строкам, исключенным в формуле DAX. Если пользователь является членом другой роли и ее безопасность на уровне строк разрешает доступ к определенному набору строк, пользователь может просматривать данные из этих строк.

Формулы безопасности на уровне строк применяются к указанным строкам, а также к связанным с ними строкам. Если в таблице есть несколько связей, фильтры применяются к активной связи. Формулы безопасности на уровне строк будут пересекаться с другими формулами, определенными для связанных таблиц.

Дополнительные сведения:
Row-level security (RLS) with Power BI (Безопасность на уровне строк (RLS) в Power BI)
Роли в Analysis Services

Запросы

Запросы DAX можно создавать и выполнять в SQL Server Management Studio (SSMS) и в средствах с открытым кодом, таких как DAX Studio (daxstudio.org). В отличие от формул вычислений DAX, которые можно создавать только в табличных моделях данных, запросы DAX также можно выполнять к многомерным моделям Analysis Services. Запросы DAX зачастую проще в написании и эффективнее, чем запросы многомерных выражений (MDX).

Запрос DAX представляет собой инструкцию, наподобие инструкции SELECT в T-SQL. Простейший тип запроса DAX — инструкция evaluate. Например,

Этот запрос возвращает таблицу только с теми продуктами, у которых значение SafetyStockLevel меньше 200, отсортированными в порядке возрастания по полю EnglishProductName.

В рамках запроса можно создавать меры. Меры существуют, только пока выполняется запрос. Дополнительные сведения см. в статье Запросы DAX.

Формулы

Формулы DAX важны для создания вычислений в вычисляемых столбцах и мерах, а также для защиты данных с помощью безопасности на уровне строк. Для создания формул для вычисляемых столбцов и мер используется строка формул, расположенная вверху окна конструктора моделей или в редакторе DAX. Чтобы создать формулы для безопасности на уровне строк, используйте диспетчер ролей или диалоговое окно «Управление ролями». С помощью сведений в этом разделе вы получите представление об основных принципах формул DAX.

Основы формул

Формулы DAX могут быть как совсем простыми, так и довольно сложными. В таблице ниже приведен ряд примеров простых формул, которые можно использовать в вычисляемом столбце.

Формула Определение
= TODAY() Вставляет текущую дату в каждую строку вычисляемого столбца.
= 3 Вставляет значение 3 в каждую строку вычисляемого столбца.
= [Column1] + [Column2] Складывает значения из столбцов [Column1] и [Column2] одной строки, а затем помещает результат в ту же строку в вычисляемом столбце.

Независимо от уровня сложности формулы для ее создания можно следовать приведенной ниже последовательности действий.

Каждая формула должна начинаться со знака равенства (=).

Можно ввести имя функции, выбрать его или ввести выражение.

Введите первые несколько букв имени, и функция автозаполнения выведет список доступных функций, таблиц и столбцов. Чтобы добавить элемент из списка автозаполнения в формулу, нажмите клавишу TAB.

Чтобы отобразить список доступных функций, можно также нажать кнопку Fx. Чтобы выбрать функцию из раскрывающегося списка, используйте клавиши со стрелками для перехода по элементам и нажмите кнопку ОК, чтобы добавить функцию в формулу.

Укажите аргументы функции, выбрав их в раскрывающемся списке возможных таблиц и столбцов или введя значения.

Проверьте наличие синтаксических ошибок: убедитесь в том, что все скобки закрыты, а столбцы, таблицы и значения указаны правильно.

Чтобы подтвердить ввод формулы, нажмите клавишу ВВОД.

Вычисляемый столбец заполняется значениями сразу после ввода формулы и ее проверки. Для меры нажатие клавиши ВВОД приводит к сохранению определения меры в таблице. Если формула недопустима, отображается ошибка.

Например, рассмотрим следующую формулу в мере с именем Days in Current Quarter (Дней в текущем квартале):

Эта мера используется для определения соотношения между неполным текущим периодом и предыдущим периодом. Формула должна учитывать истекшую часть периода и сравнивать ее с той же частью предыдущего периода. В этом случае соотношение определяется по формуле [Дней с начала текущего квартала]/[Дней в текущем квартале].

Эта формула содержит следующие элементы:

Элемент формулы Описание
Days in Current Quarter Имя меры.
= Формула начинается со знака равенства (=).
COUNTROWS COUNTROWS подсчитывает число строк в таблице Date.
() В круглых скобках указываются аргументы.
DATESBETWEEN Функция DATESBETWEEN возвращает даты между первой и последней датами для каждого значения в столбце Date таблицы Date.
‘Date’ Определяет таблицу Date. Имена таблиц заключаются в одинарные кавычки.
[Date] Определяет столбец Date в таблице Date. Имена столбцов заключаются в квадратные кавычки.
,
STARTOFQUARTER Функция STARTOFQUARTER возвращает дату начала квартала.
LASTDATE Функция LASTDATE возвращает последнюю дату квартала.
‘Date’ Определяет таблицу Date.
[Date] Определяет столбец Date в таблице Date.
,
ENDOFQUARTER Функция ENDOFQUARTER
‘Date’ Определяет таблицу Date.
[Date] Определяет столбец Date в таблице Date.

Использование автозаполнения формул

Автозаполнение помогает соблюдать правильный синтаксис формул, предлагая варианты для каждого из элементов в формуле.

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

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

Использование нескольких функций в формуле

Функции можно вкладывать, то есть использовать результаты одной функции в качестве аргумента другой функции. В вычисляемых столбцах поддерживается до 64 уровней вложенности функций. Однако вложенность функций может усложнить создание формул и диагностику ошибок. Многие функции предназначены для использования исключительно в качестве вложенных. Эти функции возвращают таблицу, которая не может быть непосредственно сохранена в качестве результата, но может быть передана табличной функции в качестве входного параметра. Например, в качестве первого аргумента функций SUMX, AVERAGEX и MINX требуется таблица.

Функции

Функция — это именованная формула в выражении. В большинстве функций в качестве входных данных используются обязательные и необязательные аргументы, также называемые параметрами. При выполнении функции возвращается значение. В DAX есть функции, с помощью которых можно производить вычисления с датами и временем, создавать условные значения, работать со строками, выполнять уточняющие запросы на основе связей и перебирать таблицы для рекурсивных вычислений. Многие из этих функций очень похожи на формулы Excel, однако формулы DAX отличаются в следующих важных аспектах.

Функция DAX всегда ссылается на столбец или таблицу целиком. В формулу можно добавить фильтры, чтобы использовать только определенные значения из таблицы или столбца.

Если нужно настроить вычисления на уровне строк, то в языке DAX имеются функции, использующие в зависимости от контекста либо текущее значение строки, либо связанное значение в качестве своего рода параметра. Чтобы понять, как работают эти функции, см. раздел Контекст этой статьи.

В языке DAX имеется множество функций, возвращающих таблицу, а не значение. Таблица не отображается в клиенте отчетов, она служит для передачи данных другим функциям. Например, можно получить таблицу, а затем подсчитать уникальные значения в ней или вычислить динамические суммы по отфильтрованным таблицам или столбцам.

Агрегатные функции

Статистические функции вычисляют (скалярное) значение, например число, сумму, среднее, минимальное или максимальное значение для всех строк в столбце или таблице в соответствии с заданным выражением. Дополнительные сведения см. в статье Статистические функции.

Функции даты и времени

Функции даты и времени в DAX схожи с функциями даты и времени Microsoft Excel. Однако функции DAX основаны на типе данных datetime начиная с 1 марта 1900 г. Дополнительные сведения см. в разделе Функции даты и времени.

Функции фильтрации

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

Финансовые функции

Финансовые функции — эти функции используются в формулах, которые выполняют финансовые вычисления, такие как чистая приведенная стоимость и норма прибыли. Эти функции похожи на финансовые функции, используемые в Microsoft Excel. Дополнительные сведения см. в разделе Финансовые функции.

Информационные функции

Информационная функция проверяет ячейку или строку, указанные в качестве аргумента, и сообщает, соответствует ли значение ожидаемому типу. Например, функция ISERROR возвращает значение TRUE, если упоминаемое значение содержит ошибку. Дополнительные сведения см. в разделе Информационные функции.

Логические функции

Логические функции обрабатывают выражение и возвращают сведения о значениях в выражении. Например, функция TRUE позволяет определить, возвращает ли выражение значение TRUE. Дополнительные сведения см. в разделе Логические функции.

Математические и тригонометрические функции

Математические функции в DAX весьма схожи с математическими и тригонометрическими функциями Excel. Числовые типы данных, используемые в функциях DAX, имеют незначительные отличия. Дополнительные сведения см. в разделе Математические и тригонометрические функции.

Другие функции

Эти функции выполняют уникальные действия, и поэтому их нельзя отнести к другим категориям. Дополнительные сведения см. в разделе Другие функции.

Функции связей

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

Статистические функции

Статистические функции вычисляют значения, связанные со статистическими распределениями и вероятностями, например стандартное отклонение и число перестановок. Дополнительные сведения см. в разделе Статистические функции.

Текстовые функции

Текстовые функции в DAX очень похожи на их аналоги в Excel. Можно вернуть часть строки, искать текст в строке или объединить строковые значения. DAX также предоставляет функции для управления форматами дат, времени и чисел. Дополнительные сведения см. в разделе Текстовые функции.

Функции операций со временем

Функции логики операций со временем в DAX позволяют выполнять вычисления с использованием встроенных наборов знаний о календарях и датах. Используя диапазоны времени и дат в сочетании с агрегатами или вычислениями, можно производить осмысленные сравнения объемов продаж, запасов и других показателей за сопоставимые периоды времени. Дополнительные сведения см. в разделе Функции операций со временем (DAX).

Функции обработки таблиц

Эти функции возвращают таблицу или обрабатывают существующие таблицы. Например, с помощью ADDCOLUMNS можно добавить вычисляемые столбцы в указанную таблицу либо вернуть сводную таблицу по набору групп с помощью функции SUMMARIZECOLUMNS. Дополнительные сведения см. в разделе Функции обработки таблиц.

Переменные

Переменные в выражении можно создавать с помощью функции VAR. VAR технически не является функцией. Это ключевое слово, применяемое для сохранения результата выражения в именованной переменной. Затем переменную можно передавать в качестве аргумента в другие выражения мер. Пример:

В этом примере TotalQty можно передать в другие выражения как именованную переменную. Переменные могут быть любого скалярного типа данных, включая таблицы. Переменные значительно расширяют возможности формул DAX.

Типы данных

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

DAX поддерживает следующие типы данных:

Однако количество значащих цифр ограничено 17 знаками после запятой. Логический Логический Значение True или False. Текстовый Строковый Строка символьных данных в Юникоде. Могут быть строками, числами или датами, представленными в текстовом формате. Дата Дата и время Значения даты и времени в принятом представлении даты-времени.

В табличных моделях данных в качестве входных или выходных данных для многих функций DAX также используется тип данных Table. Например, функция FILTER принимает в качестве входного аргумента таблицу и возвращает другую таблицу, которая содержит только строки, удовлетворяющие условиям фильтра. Применение табличных функций в сочетании с агрегатными функциями позволяет выполнять сложные вычисления с динамически определяемыми наборами данных.

Хотя типы данных обычно устанавливаются автоматически, важно понимать, как они работают, в особенности в формулах DAX. Например, ошибки в формулах или непредвиденных результаты часто связаны с использованием определенного оператора, который недопустим для указанного в аргументе типа данных. Например, формула = 1 & 2 возвращает строковое значение 12. В то же время формула = «1» + «2» возвращает целочисленный результат 3.

Контекст

Контекст является важным понятием при создании формул DAX. Контекст позволяет выполнять динамический анализ, при котором результаты формулы могут изменяться в зависимости от выделенной строки или ячейки и любых взаимосвязанных данных. Понимание и эффективное использование контекста важно для построения высокопроизводительного динамического анализа и для устранения неполадок в формулах.

Формулы в табличных моделях могут вычисляться в разном контексте в зависимости от других структурных элементов, например на них влияет следующее:

Существуют различные типы контекста: контекст строки, контекст запросаи контекст фильтра.

Контекст строки

Контекст строки можно представить как «текущую строку». Если формула создана в вычисляемом столбце, то контекст строки для этой формулы включает в себя значения всех столбцов в текущей строке. Если таблица связана с другой таблицей, содержимое также включает в себя все значения из другой таблицы, связанные с текущей строкой.

Контекст строки также учитывает любые связи, определенные между таблицами, в том числе связи, заданные в пределах вычисляемого столбца при помощи формул DAX, чтобы определить, какие строки в связанных таблицах связаны с текущим рядом.

Например, в следующей формуле функция RELATED используется для выборки значения суммы налогов из связанной таблицы в зависимости от региона, в который отправлен заказ. Значение суммы налогов определяется с использованием значения для региона из текущей таблицы путем поиска этого региона в связанной таблице и получения ставки налога для этого региона из связанной таблицы.

Эта формула получает налоговую ставку в текущем регионе из таблицы Region и складывает ее со значением столбца Freight. В формулах DAX не обязательно знать или задавать особые связи, соединяющие таблицы.

Контекст нескольких строк

Язык DAX включает функции, которые повторяют вычисления над таблицей. Эти функции могут содержать несколько текущих строк, каждая из которых может обладать собственным контекстом строки. В сущности, эти функции позволяют создавать формулы, выполняющие рекурсию по внутреннему или внешнему циклу.

С помощью DAX можно создать одну формулу, возвращающую необходимое значение, причем ее результаты будут автоматически обновляться при каждом добавлении пользователем данных в таблицы.

Подробный пример см. в описании функции EARLIER.

Иначе говоря, функция EARLIER сохраняет контекст строки из операции, предшествующей текущей. Функция всегда хранит в памяти два набора контекстов: один набор контекста представляет текущую строку для внутреннего цикла формулы, а другой набор контекста представляет текущую строку для внешнего цикла формулы. DAX автоматически формирует поток значений между двумя циклами, чтобы можно было создавать сложные агрегаты.

Контекст запроса

Контекст запроса представляет подмножество данных, которое неявным образом возвращается для формулы. Например, когда пользователь помещает в отчет меру или поле, обработчик анализирует заголовки строк и столбцов, срезы и фильтры отчетов для определения контекста. Затем выполняются необходимые запросы к модели данных для получения правильного подмножества данных, выполнения вычислений, определенных формулой, и последующего заполнения значений в отчете.

Однако обычно пользователям не нужны одни и те же результаты, повторяющиеся сотни раз. Вместо этого они хотят знать прибыль за определенный год, в определенной стране, по определенному продукту или их сочетанию, а затем получить общий итог.

В отчете контекст изменяется путем фильтрации, добавления или удаления полей и использования срезов. Для каждого изменения — контекст запроса, в котором вычисляется мера. Поэтому та же формула при использовании в мере вычисляется в различных контекстах запроса для каждой ячейки.

Контекст фильтра

Контекст фильтра — это набор значений, допустимых для каждого столбца или для конкретных значений, извлекаемых из связанной таблицы. Фильтры могут применяться к столбцу в конструкторе или на уровне представления (отчеты и сводные таблицы). Фильтры также можно определить явным образом с помощью критериев фильтров в формуле.

Контекст фильтра добавляется при задании ограничений фильтра для набора значений, допустимых в столбце или таблице, с помощью аргументов в формуле. Контекст фильтра применяется поверх других контекстов, например контекста строки или контекста запроса.

В табличных моделях существует много способов создания контекста фильтра. В клиентах, использующих модель, например отчетах Power BI, пользователи могут создавать фильтры в режиме реального времени, добавляя срезы или фильтры отчета к заголовкам строк и столбцов. Также можно указать критерии фильтров прямо в формуле, задав связанные значения для фильтрации таблиц, используемых в качестве входных, либо для динамического получения контекста для значений, используемых в вычислениях. Можно также полностью или выборочно очищать фильтры для определенных столбцов. Это очень полезная возможность при создании формул для вычисления итогов.

Дополнительные сведения о создании фильтров в формулах см. в разделе Функция FILTER (DAX).
Пример очистки фильтров для получения итоговых сумм см. в разделе Функция ALL (DAX).

Примеры выборочного снятия и применения фильтров в формулах см. в описании функции ALLEXCEPT.

Определение контекста в формулах

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

Контекст во время проверки (а также во время операций повторного вычисления) определяется так, как описано в предыдущих разделах, с учетом доступных таблиц в модели, любых связей между таблицами и применяемых фильтров.

Например, если данные импортированы в новую таблицу и не связаны с любыми другими таблицами, но фильтры еще не применены, то в текущий контекст будет входить весь набор столбцов в таблице. Если между этой и другими таблицами существуют связи, то текущий контекст будет включать связанные таблицы. При добавлении столбца из таблицы в отчет, где есть срезы и, возможно, некоторые фильтры отчетов, контекст формулы представляет собой подмножество данных в каждой ячейке отчета.

Контекст — это мощная концепция, которая может также усложнять поиск и исправление ошибок в формулах. Рекомендуется начать работу с простых формул и связей, чтобы понять, как работает контекст. В следующем разделе приведены несколько примеров использования формул в различных типах контекстов для возвращения динамических результатов.

Операторы

В языке DAX используются четыре различных типа операторов вычислений в формулах:

Подробные сведения об операторах, используемых в формулах DAX, см. в статье Операторы DAX.

Работа с таблицами и столбцами

Таблицы в табличных моделях данных похожи на таблицы Excel, но отличаются способом обработки данных и формул.

Ссылки на таблицы и столбцы в формулах

На любую таблицу и любой столбец можно ссылаться по имени. Например, следующая формула показывает, как ссылаться на столбцы из двух таблиц по полному имени:

При вычислении формулы конструктор моделей сначала проверяет общий синтаксис, а затем сравнивает указанные имена столбцов и таблиц с возможными столбцами и таблицами в текущем контексте. Если имя, использованное в формуле, определено неоднозначно либо столбец или таблица не найдены, будет выдана ошибка (строка #ERROR вместо значения данных в ячейках, в которых произошла ошибка). Дополнительные сведения о требованиях к именованию таблиц, столбцов и других объектов см. в разделе «Требования к именованию» статьи Синтаксис DAX.

Связи между таблицами

Создавая связи между таблицами, вы получаете возможность использования связанных значений в других таблицах в вычислениях. Например, с помощью вычисляемого столбца можно найти все записи об отгрузке, связанные с текущим торговым посредником, а затем суммировать затраты на доставку. Однако во многих случаях связь не является обязательной. Используя функцию LOOKUPVALUE в формуле, можно получить значение result_columnName для строки, которая удовлетворяет условиям, указанным в аргументах search_column и search_value.

Многие функции DAX требуют наличия связи между двумя или несколькими таблицами, чтобы найти столбцы, на которые сделана ссылка, и возвратить осмысленные результаты. Некоторые функции пытаются определить такую связь, но для получения наилучших результатов нужно всегда создавать связь, если это возможно. Табличные модели данных поддерживают несколько связей между таблицами. Во избежание путаницы или неверных результатов только одна связь является активной в каждый момент времени. Однако активную связь можно менять по мере необходимости для использования различных подключений в вычислениях. С помощью функции USERELATIONSHIP можно указать одну или несколько связей для конкретного вычисления.

При использовании связей важно соблюдать приведенные ниже правила проектирования формул.

Если таблицы соединены связью, в ключевых столбцах должны быть одинаковые значения. Целостность данных не обеспечивается принудительно, поэтому создать связь можно, даже если значения в ключевом столбце отличаются. В этом случае следует помнить, что наличие пустых или несоответствующих значений может повлиять на результаты вычисления формул.

При соединении таблиц в модели с помощью связей увеличивается размер контекста, в котором вычисляются формулы. Изменения контекста, являющиеся итогом добавления новых таблиц, новых связей или смены активной связи, могут привести к совершенно непредвиденным изменениям результатов. Дополнительные сведения см. в разделе Контекст данной статьи.

Обработка и обновление

Обработка и пересчет — это две отдельные операции, которые однако связаны друг с другом. Ими необходимо уметь пользоваться при создании модели со сложными формулами, большим объемом данных или данными из внешних источников данных.

Обработка (обновление) — это обновление данных в модели данными из внешнего источника.

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

Значения в вычисляемом столбце вычисляются и хранятся в модели. Чтобы обновить значения в вычисляемом столбце, необходимо обработать модель одной из трех команд обработки: полная обработка, обработка данных и повторное вычисление. При любом изменении формулы ее результат должен всегда повторно вычисляться для всего столбца.

Значения, вычисляемые с помощью мер, динамически рассчитываются каждый раз, когда пользователь добавляет меру в сводную таблицу или открывает отчет. Когда пользователь изменяет контекст, значения, возвращаемые мерой, меняются. Результаты меры всегда отражают последнее состояние кэша в памяти.

Обработка и пересчет не влияют на формулы безопасности на уровне строк, если только в результате пересчета не возвращается другое значение, что делает строку доступной или не доступной для запроса членами роли.

Обновления

DAX постоянно улучшается. Новые и обновленные функции выпускаются в составе следующего доступного обновления, которое обычно предоставляется ежемесячно. Сначала обновляются службы, а затем устанавливаются такие приложения, как Power BI Desktop, Excel, SQL Server Management Studio (SSMS) и расширение проекта Analysis Services для Visual Studio (SSDT). Обновления для служб SQL Server Analysis Services содержатся в следующем накопительном обновлении. Новые функции впервые объявляются и описываются в ссылке на функцию DAX, совпадающую с обновлениями Power BI Desktop.

Не все функции поддерживаются в более ранних версиях SQL Server Analysis Services и Excel.

Устранение неполадок

Если во время определения формулы выводится ошибка, значит формула может содержать синтаксическую ошибку, семантическую ошибкуили ошибку вычисления.

Синтаксические ошибки устранять проще всего. Они обычно вызваны пропущенной скобкой или запятой.

Ошибки другого типа возникают, когда синтаксис правилен, но значение или столбец, на который указывает ссылка, не имеют смысла в контексте формулы. Семантические ошибки и ошибки вычисления могут вызываться следующими причинами.

В первых четырех случаях DAX помечает весь столбец, содержащий недопустимую формулу. В последнем случае DAX выделяет имя столбца серым цветом, чтобы показать, что он находится в необработанном состоянии.

Приложения и средства

Power BI Desktop

Power BI Desktop — это бесплатное приложение для моделирования данных и создания отчетов. Конструктор моделей включает в себя редактор DAX для создания формул вычисления DAX.

Power Pivot в Excel

Конструктор моделей Power Pivot в Excel включает в себя редактор DAX для создания формул вычисления DAX.

Visual Studio

Visual Studio с расширением проектов Analysis Services (VSIX) используется для создания проектов модели Analysis Services. Конструктор табличных моделей, установленный вместе с расширением проектов, включает редактор DAX.

SQL Server Management Studio.

SQL Server Management Studio (SSMS) — это важный инструмент для работы с Analysis Services. SSMS включает в себя редактор запросов DAX для выполнения запросов как к табличным, так и к многомерным моделям.

DAX Studio

DAX Studio — это клиентское средство с открытым кодом для создания и выполнения запросов DAX к моделям Analysis Services, Power BI Desktop и Power Pivot в Excel.

Tabular Editor.

Табличный редактор — это средство с открытым кодом, которое обеспечивает интуитивно понятное иерархическое представление каждого объекта в метаданных табличной модели. Табличный редактор включает редактор DAX с выделением синтаксиса, который предоставляет простой способ изменения мер, вычисляемых столбцов и вычисляемых выражений таблиц.

Учебные материалы

При изучении DAX лучше всего использовать приложение, в котором вы будете создавать свои модели данных. Для Analysis Services, Power BI Desktop и Power Pivot в Excel предлагаются статьи и учебники с уроками по созданию мер, вычисляемых столбцов и фильтров строк с помощью DAX. Ниже приведены некоторые дополнительные ресурсы.

Definitive Guide to DAX (Полное справочное руководство по DAX), Альберто Феррари (Alberto Ferrari) и Марко Руссо (Marco Russo), Microsoft Press. Доступное сейчас во втором выпуске, это подробное пошаговое руководство содержит как базовые сведения, так и более изощренные приемы для начинающих специалистов по моделированию данных и бизнес-аналитике.

Сообщество

В сфере DAX действует активное сообщество, члены которого всегда готовы поделиться своим опытом. В Сообществе Power BI (Майкрософт) есть специальный форум, посвященный командам и советам по DAX.

Источник

Операционные системы и программное обеспечение