Основные сведения о DAX в Power BI DesktopDAX basics in Power BI Desktop

Это руководство предназначено для пользователей, не знакомых с Power BI Desktop.This article is for users new to Power BI Desktop. Оно предоставляет краткие и простые вводные сведения о том, как можно использовать язык выражений анализа данных (DAX) для решения ряда задач анализа данных и основных вычислений.It’s meant to give you a quick and easy introduction on how you can use Data Analysis Expressions (DAX) to solve a number of basic calculation and data analysis problems. Здесь будут предоставлены некоторые концептуальные сведения, ряд задач, которые вы можете выполнить, и несколько контрольных вопросов для проверки, что вы узнали.We’ll go over some conceptual information, a series of tasks you can complete, and a few quizzes to test what you’ve learned. После изучения этой статьи вы должны хорошо понимать наиболее важные основные понятия в DAX.After completing this article, you should have a good understanding of the most important fundamental concepts in DAX.

Что такое DAXWhat is DAX?

DAX — это коллекция функций, операторов и констант, которые можно использовать в формуле или выражении для вычисления и возврата одного или нескольких значений.DAX is a collection of functions, operators, and constants that can be used in a formula, or expression, to calculate and return one or more values. Проще говоря, DAX помогает создавать новую информацию из данных, уже существующих в вашей модели.Stated more simply, DAX helps you create new information from data already in your model.

Почему так важен DAX?Why is DAX so important?

Довольно просто создать новый файл Power BI Desktop и импортировать в него некоторые данные.It’s quite easy to create a new Power BI Desktop file and import some data into it. Можно даже создать отчеты, показывающие ценные сведения, без использования каких-либо формул DAX вообще.You can even create reports that show valuable insights without using any DAX formulas at all. Но что делать, если необходимо проанализировать процент роста по категориям продуктов, а также для разных диапазонов дат?But, what if you need to analyze growth percentage across product categories and for different date ranges? Или если требуется вычислить годовой рост в сравнении с тенденциями рынка?Or, you need to calculate year-over-year growth compared to market trends? Формулы DAX предоставляют такую возможность, как и многие другие важные возможности.DAX formulas provide this capability and many other important capabilities as well. Научившись создавать эффективные формулы DAX, вы сможете наиболее эффективно использовать свои данные.Learning how to create effective DAX formulas will help you get the most out of your data. Получив нужную информацию, вы сможете начать решать реальные бизнес-задачи, влияющие на производительность.When you get the information you need, you can begin to solve real business problems that affect your bottom line. Это преимущество Power BI, и DAX поможет вам получить его.This is the power in Power BI, and DAX will help you get there.

Предварительные требованияPrerequisites

Возможно, вы уже создавали формулы в Microsoft Excel.You might already be familiar with creating formulas in Microsoft Excel. Эти знания пригодятся для понимания DAX, но даже если у вас нет опыта работы с формулами Excel, описанные здесь принципы помогут практически сразу приступить к созданию формул DAX и решению реальных задач бизнес-аналитики.That knowledge will be helpful in understanding DAX, but even if you have no experience with Excel formulas, the concepts described here will help you get started creating DAX formulas and solving real-world BI problems right away.

Основное внимание мы уделим объяснению формул DAX, используемых в вычислениях, в частности в мерах и вычисляемых столбцах.We’re going to focus on understanding DAX formulas used in calculations, more specifically, in measures and calculated columns. Вы должны быть знакомы с Power BI Desktop, уметь импортировать данные, добавлять поля в отчет, а также понимать основные принципы мер и вычисляемых столбцов.You should already be familiar with Power BI Desktop, importing data, adding fields to a report, and you should also be familiar with fundamental concepts of Measures and Calculated columns.

Пример книгиExample Workbook

Лучший способ изучения DAX — создать некоторые простые формулы, использовать их с некоторыми реальными данными и его фактическими данными и посмотреть результаты.The best way to learn DAX is to create some basic formulas, use it with some actual data, and see the results for yourself. В примерах и задачах здесь используется файл Contoso Sales for Power BI Desktop.The examples and tasks here use the Contoso Sales Sample for Power BI Desktop Preview file. Это тот же файл примера, который используется в статье Учебник. Создание собственных мер в Power BI Desktop.This is the same sample file used in the Tutorial: Create your own measures in Power BI Desktop article. Скачать этот файл можно здесь.Here is the sample file to download.

Давайте начнем!Let's begin!

Мы будем строить наше объяснение DAX вокруг трех фундаментальных понятий: синтаксиса, функций и контекста .We will frame our understanding of DAX around three fundamental concepts: Syntax, Functions, and Context. Конечно, в DAX есть и другие важные понятия, но, разобравшись в этих трех основных понятиях, вы получите наилучшую основу для построения навыков работы с DAX.Of course, there are other important concepts in DAX, but understanding these three concepts will provide the best foundation on which to build your DAX skills.

СинтаксисSyntax

Прежде чем создавать собственные формулы, давайте рассмотрим синтаксис формул DAX.Before you create your own formulas, let’s take a look at DAX formula syntax. Синтаксис включает различные элементы, которые составляют формулу, или проще говоря, это способ записи формулы.Syntax includes the various elements that make up a formula, or more simply, how the formula is written. Например, рассмотрим простую формулу DAX для меры.For example, let’s look at a simple DAX formula for a measure.

Эта формула содержит следующие элементы синтаксиса.This formula includes the following syntax elements:

A.A. Имя меры Total Sales (Всего продаж).The measure name Total Sales.

B.B. Оператор знака равенства (=) обозначает начало формулы.The equals sign operator (=) indicates the beginning of the formula. При вычислении он будет возвращать результат.When calculated, it will return a result.

C.C. Функция DAX SUM складывает все числа в столбце Sales[SalesAmount].The DAX function SUM adds up all of the numbers in the Sales[SalesAmount] column. Более подробно функции будут рассматриваться позднее.You’ll learn more about functions later.

D.D. В скобки () заключается выражение, содержащее один или несколько аргументов.Parenthesis () surround an expression containing one or more arguments. Всем функциям требуется по крайней мере один аргумент.All functions require at least one argument. Аргумент передает значение в функцию.An argument passes a value to a function.

E.E. Ссылочная таблица Sales (Продажи).The referenced table Sales.

F.F. Ссылочный столбец [SalesAmount] в таблице Sales (Продажи).The referenced column [SalesAmount] in the Sales table. С помощью этого аргумента функция СУММ знает, по какому столбцу следует суммировать значения.With this argument, the SUM function knows on which column to aggregate a SUM.

При попытке понять формулу DAX часто бывает полезно перевести каждый элемент на язык, на котором вы думаете и говорите каждый день.When trying to understand a DAX formula, it is often helpful to break down each of the elements into a language you think and speak every day. Например, можно прочитать эту формулу следующим образом.For example, you can read this formula as:

Для меры с именем "Всего продаж" вычислить (=) СУММУ значений в столбце [SalesAmount] таблицы "Продажи".For the measure named Total Sales, calculate (=) the SUM of values in the [SalesAmount ] column in the Sales table.

При добавлении в отчет эта мера вычисляет и возвращает значения путем суммирования объемов продаж для каждого из полей, которые мы включаем, например, для поля Cell Phones in the USA (Мобильные телефоны в США).When added to a report, this measure calculates and returns values by summing up sales amounts for each of the other fields we include, for example, Cell Phones in the USA.

Вы можете подумать: разве эта мера не делает то же, что было бы, если просто добавить поле SalesAmount в отчет?You might be thinking ‘Isn’t this measure doing the same thing as if I were to just add the SalesAmount field to my report?’ Да, действительно.Well, yes. Однако есть веская причина для создания собственной меры, которая суммирует значения из поля SalesAmount: эту меру можно использовать в качестве аргумента в других формулах.But, there’s a good reason to create our own measure that sums up values from the SalesAmount field: We can use it as an argument in other formulas. Пока это может показаться несколько запутанным, но по мере роста навыков работы с формулами DAX понимание этого сделает ваши формулы и модель более эффективными.This may seem a little confusing now, but as your DAX formula skills grow, knowing this will make your formulas and your model more efficient. В дальнейшем вы увидите, как мера Total Sales (Всего продаж) используется в качестве аргумента в других формулах.In fact, you’ll see the Total Sales measure showing up as an argument in other formulas later on.

Давайте рассмотрим еще некоторые моменты относительно этой формулы.Let’s go over a few more things about this formula. В частности, мы представили функцию SUM.In particular, we introduced a function, SUM. Функции — это предварительно записанные формулы, которые облегчают выполнение сложных вычислений и манипуляций с числами, датами, временем, текстом и пр.Functions are pre-written formulas that make it easier to do complex calculations and manipulations with numbers, dates, time, text, and more. Более подробно функции будут рассматриваться ниже.You will learn more about functions later.

Вы также видите столбец [SalesAmount] с префиксом, указывающим таблицу Sales (Продажи), в которой находится этот столбец.You also see the column [SalesAmount] was preceded by the table Sales in which the column belongs. Такое указание имени столбца с префиксом в виде имени таблицы называется полным именем столбца.This is known as a fully qualified column name in that it includes the column name preceded by the table name. Если столбцы относятся к одной и той же таблице, указывать в формуле их имя таблицы необязательно.Columns referenced in the same table do not require the table name be included in the formula. Это сделает длинные формулы, ссылающиеся на многие столбцы, короче и удобнее для чтения.This can make long formulas that reference many columns shorter and easier to read. Тем не менее рекомендуется включать имя таблицы в формулы мер, даже если столбцы находятся в одной и той же таблице.However, it's good practice to include the table name in your measure formulas, even when in the same table.

Примечание

Если имя таблицы содержит пробелы, зарезервированные ключевые слова или недопустимые знаки, необходимо заключить имя таблицы в одинарные кавычки.If a table name contains spaces, reserved keywords, or disallowed characters, you’ll need to enclose the table name in single quotation marks. Также необходимо заключать в кавычки имена таблиц, если они содержат символы вне диапазона алфавитно-цифровых символов ANSI, независимо от того, поддерживает ли ваш языковой стандарт этот набор символов.You’ll also need to enclose table names in quotation marks if the name contains any characters outside the ANSI alphanumeric character range, regardless of whether your locale supports the character set or not.

Очень важно, чтобы формулы имели правильный синтаксис.It’s important your formulas have the correct syntax. В большинстве случаев при неправильном синтаксисе будет возвращаться синтаксическая ошибка.In most cases, if the syntax is not correct, a syntax error will be returned. В других случаях синтаксис может быть правильным, но возвращаемые значения — не те, что вы ожидали.In other cases, the syntax may be correct, but the values returned might not be what you are expecting. Редактор DAX в Power BI Desktop включает функцию предложений, которая помогает создавать синтаксически верные формулы, подсказывая подходящие элементы.The DAX editor in Power BI Desktop includes a suggestions feature, used to create syntactically correct formulas by helping you select the correct elements.

Давайте создадим простую формулу.Let’s create a simple formula. Эта задача поможет вам лучше разобраться в синтаксисе формул и понять, как функция предложений в строке формул может помочь.This task will help you further understand formula syntax and how the suggestions feature in the formula bar can help you.

Задача: создание формулы мерыTask: Create a measure formula

Для выполнения этой задачи необходимо открыть файл Contoso Sales Power BI Desktop.To complete this task, you’ll need to open the Contoso Sales Sample Power BI Desktop file.

  1. В представлении отчетов в списке полей щелкните правой кнопкой мыши таблицу Sales (Продажи), а затем выберите пункт Создать меру.In Report view, in the field list, right-click on the Sales table, and then click New Measure.

  2. В строке формул замените Measure, введя новое имя меры, Previous Quarter Sales (Продажи за прошлый квартал).In the formula bar, replace Measure by typing a new measure name, Previous Quarter Sales.

  3. После знака равенства введите первые несколько букв CAL, а затем дважды щелкните функцию, которую нужно использовать.After the equals sign, type the first few letters CAL, and then double-click the function you want to use. В этой формуле нужно использовать функцию CALCULATE.In this formula, you want to use the CALCULATE function.

    Вы будете использовать функцию ВЫЧИСЛИТЬ для фильтрации величин, которые требуется суммировать, по аргументу, переданному в функцию ВЫЧИСЛИТЬ.You’ll use the CALCULATE function to filter the amounts we want to sum by an argument we pass to the CALCULATE function. Такие функции называются вложенными.This is what’s referred to as nesting functions. Функция «ВЫЧИСЛИТЬ» имеет по крайней мере два аргумента.The CALCULATE function has at least two arguments. Первый аргумент — это выражение для оценки, а второй — фильтр.The first is the expression to be evaluated, and the second is a filter.

  4. После открывающей скобки ( для функции CALCULATE введите SUM, а затем другую открывающую скобку (.After the opening parenthesis ( for the CALCULATE function, type SUM followed by another opening parenthesis (. Теперь нам нужно передать аргумент в функцию SUM.Now we need to pass an argument to the SUM function.

  5. Начните вводить Sal, а затем выберите Sales [SalesAmount] и добавьте закрывающую скобку ).Begin typing Sal, and then select Sales[SalesAmount], followed by a closing parenthesis ). Это первый аргумент-выражение для нашей функции ВЫЧИСЛИТЬ.This is the first expression argument for our CALCULATE function.

  6. Введите запятую (,) и пробел, чтобы задать первый фильтр, а затем введите PREVIOUSQUARTER.Type a comma (,) followed by a space to specify the first filter, and then type PREVIOUSQUARTER. Это будет наш фильтр.This will be our filter.

    Функция операций со временем "PREVIOUSQUARTER" будет использоваться для фильтрации результатов суммирования по предыдущему кварталу.You’ll use the PREVIOUSQUARTER time intelligence function to filter SUM results by the previous quarter.

  7. После открывающей скобки ( для функции PREVIOUSQUARTER введите Calendar[DateKey].After the opening parenthesis ( for the PREVIOUSQUARTER function, type Calendar[DateKey].

    Функция «ПРЕДКВАРТАЛ» имеет один аргумент — столбец, содержащий непрерывный диапазон дат.The PREVIOUSQUARTER function has one argument, a column containing a contiguous range of dates. В нашем случае это столбец DateKey из таблицы Calendar.In our case, that's the DateKey column in the Calendar table.

  8. Убедитесь, что оба аргумента, передаваемые в функции PREVIOUSQUARTER и CALCULATE, заканчиваются двумя закрывающими круглыми скобками )).Make sure both the arguments being passed to the PREVIOUSQUARTER function and the CALCULATE function are closed by typing two closing parenthesis )).

    Теперь ваша формула должна выглядеть следующим образом:Your formula should now look like this:

    Продажи за прошлый квартал = ВЫЧИСЛИТЬ(СУММ(Sales[SalesAmount]) ПРЕДКВАРТАЛ(Calendar[DateKey]))Previous Quarter Sales = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))

  9. Нажмите кнопку с галочкой  в строке формул или нажмите клавишу ВВОД, чтобы проверить формулу и добавить ее в модель.Click the checkmark in the formula bar or press Enter to validate the formula and add it to the model.

Вы сделали это!You did it! Вы только что создали меру с помощью DAX, и при этом не ее одну.You just created a measure using DAX, and not an easy one at that. Эта формула будет вычислять суммарный объем продаж за предыдущий квартал в зависимости от фильтров, применяемых в отчете.What this formula will do is calculate the total sales for the previous quarter, depending on the filters applied in a report. Например если мы поместим SalesAmount (Объем продаж) и нашу новую меру Previous Quarter Sales (Продажи за прошлый квартал) в диаграмму, а затем добавим в качестве срезов Year (Год) и QuarterOfYear (КварталГода), то получим примерно следующее:For example, if we put SalesAmount and our new Previous Quarter Sales measure in a chart, and then added Year and QuarterOfYear as Slicers, we’d get something like this:

Вы только что ознакомились с несколькими важными аспектами формулы DAX.You were just introduced to several important aspects of DAX formulas. Во-первых, эта формула включает две функции.First, this formula included two functions. Обратите внимание, что функция операций со временем PREVIOUSQUARTER является вложенной в качестве аргумента, передаваемого в функцию фильтрации CALCULATE.Notice PREVIOUSQUARTER, a time intelligence function, is nested as an argument passed to CALCULATE, a filter function. Формулы DAX могут содержать до 64 вложенных функций.DAX formulas can contain up to 64 nested functions. Однако маловероятно, что формула будет содержать так много вложенных функций.It’s unlikely a formula would ever contain so many nested functions. На самом деле такую формулу будет очень трудно создать и отладить, и, скорее всего, она не будет работать достаточно быстро.In fact, such a formula would be very difficult to create and debug, and it probably wouldn’t be very fast either.

В этой формуле также используются фильтры.In this formula, you also used filters. Фильтры сужают диапазон вычислений.Filters narrow down what will be calculated. В данном случае в качестве аргумента был выбран один фильтр, который фактически является результатом другой функции.In this case, you selected one filter as an argument, which is actually the result of another function. Более подробно фильтры будут рассматриваться позже.You will learn more about filters later.

Наконец, вы использовали функцию ВЫЧИСЛИТЬ.Finally, you used the CALCULATE function. Это одна из наиболее мощных функций в DAX.This is one of the most powerful functions in DAX. При разработке моделей и создании более сложных формул вы скорее всего многократно будете использовать эту функцию.As you author models and create more complex formulas, you will likely use this function many times. Обсуждение функции ВЫЧИСЛИТЬ выходит за рамки этой статьи, но по мере освоения DAX обратите на эту функцию особое внимание.Discussing the CALCULATE function is outside the scope of this article, but as your knowledge of DAX grows, pay special attention to this one.

Быстрый тест по синтаксисуSyntax QuickQuiz

  1. Что делает эта кнопка в строке формул?What does this button on the formula bar do?

  2. Что всегда окружает имя столбца в формуле DAX?What always surrounds a column name in a DAX formula?

Ответы приведены в конце этой статьи.Answers are provided at the end of this article.

ФункцииFunctions

Функции являются предопределенными формулами, которые выполняют вычисления с использованием специальных значений, именуемых аргументами, в определенном порядке или структуре.Functions are predefined formulas that perform calculations by using specific values, called arguments, in a particular order or structure. Аргументами могут быть другие функции, другие формулы, выражения, ссылки на столбцы, числа, текст, логические значения, такие как TRUE и FALSE, или константы.Arguments can be other functions, another formula, expression, column references, numbers, text, logical values such as TRUE or FALSE, or constants.

В DAX имеются следующие категории функций: Дата и время, Логика операций со временем, Информационные, Логические, Математические, Статистические, Текстовые, Родительские/дочерние и Прочие.DAX includes the following categories of functions: Date and Time, Time Intelligence, Information, Logical, Mathematical, Statistical, Text, Parent/Child, and Other functions. Если вы знакомы с функциями в формулах Excel, многие из функций в DAX будут казаться вам аналогичными. Однако функции DAX уникальны в следующем.If you’re familiar with functions in Excel formulas, many of the functions in DAX will appear similar to you; however, DAX functions are unique in the following ways:

  • Функция DAX всегда ссылается на полный столбец или таблицу.A DAX function always references a complete column or a table. Если вы хотите использовать только определенные значения из таблицы или столбца, можно добавить в формулу фильтры.If you want to use only particular values from a table or column, you can add filters to the formula.

  • Если нужно настроить вычисления построчно, DAX предоставляет функции, позволяющие использовать текущее значение строки или связанное значение как тип аргумента для вычислений, которые зависят от контекста.If you need to customize calculations on a row-by-row basis, DAX provides functions that let you use the current row value or a related value as a kind of argument, to perform calculations that vary by context. Более подробно контекст будет рассматриваться позже.You will learn more about context later.

  • В DAX имеется много функций, которые возвращают таблицу, а не значение.DAX includes many functions that return a table rather than a value. Таблица не отображается, но используется для предоставления входных данных в другие функции.The table is not displayed, but is used to provide input to other functions. Например, вы можете получить таблицу и затем найти в ней уникальные значения, или вычислить динамические суммы по отфильтрованным таблицам или столбцам.For example, you can retrieve a table and then count the distinct values in it, or calculate dynamic sums across filtered tables or columns.

  • В DAX имеется множество функций логики операций со временем.DAX includes a variety of time intelligence functions. Эти функции позволяют определять или выбирать диапазоны дат и выполнять динамические вычисления на их основе.These functions let you define or select date ranges, and perform dynamic calculations based on them. Например, можно сравнивать суммы по параллельным периодам времени.For example, you can compare sums across parallel periods.

  • В Excel имеется очень популярная функция VLOOKUP (ВПР).Excel has a very popular function, VLOOKUP. Функции DAX не принимают в качестве ссылки ячейку или диапазон ячеек, в отличие от функции VLOOKUP в Excel.DAX functions don’t take a cell or cell range as a reference like VLOOKUP does in Excel. Функции DAX принимают в качестве ссылки столбец или таблицу.DAX functions take a column or a table as a reference. Не забывайте, что в Power BI Desktop вы работаете с реляционной моделью данных.Keep in mind, in Power BI Desktop, you’re working with a relational data model. Поиск значений в другой таблице довольно прост, и в большинстве случаев вообще не требуется создавать какие-либо формулы.Looking up values in another table is really quite easy, and in most cases you don’t need to create any formula at all.

    Как можно видеть, функции в DAX помогают создавать очень сложные формулы.As you can see, functions in DAX can help you create very powerful formulas. В действительности мы только коснулись основ функций.We really only touched on the basics of functions. По мере освоения DAX вы будете создавать формулы, используя множество различных функций.As your DAX skills grow, you'll create formulas using many different functions. Одним из лучших учебников, содержащих сведения о каждой функции DAX, является Справочник по функциям DAX.One of the best places to learn details about each of the DAX functions is in the DAX Function Reference.

Быстрый тест по функциямFunctions QuickQuiz

  1. На что всегда ссылается функция?What does a function always reference?
  2. Может ли формула содержать несколько функций?Can a formula contain more than one function?
  3. Какую категорию функций вы бы использовали для объединения двух строк текста в одну строку?What category of functions would you use to concatenate two text strings into one string?

Ответы приведены в конце этой статьи.Answers are provided at the end of this article.

КонтекстContext

Контекст является одним из наиболее важных понятий DAX.Context is one of the most important DAX concepts to understand. В DAX существует два типа контекста: контекст строки и контекст фильтра.There are two types of context in DAX; row context and filter context. Сначала рассмотрим контекст строки.We’ll first look at row context.

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

Проще всего воспринимать контекст строки как текущую строку.Row context is most easily thought of as the current row. Он применяется, когда формула содержит функцию, которая с помощью фильтров определяет одну строку в таблице.It applies whenever a formula has a function that applies filters to identify a single row in a table. Эта функция будет по определению применять контекст строки для каждой строки таблицы, которую она фильтрует.The function will inherently apply a row context for each row of the table over which it is filtering. Такой тип контекста строки наиболее часто применяется к мерам.This type of row context most often applies to measures.

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

Понять контекст фильтра немного сложнее, чем контекст строки.Filter context is a little more difficult to understand than row context. Проще всего представить контекст фильтра как один или несколько фильтров, примененных в вычислении, которое определяет результат или значение.You can most easily think of filter context as: One or more filters applied in a calculation that determines a result or value.

Контекст фильтра не заменяет контекст строки; скорее он применяется в дополнение к контексту строки.Filter context doesn’t exist in-place of row context; rather, it applies in addition to row context. Например, чтобы дополнительно сузить диапазон возможных значений, включаемых в вычисление, вы можете использовать контекст фильтра, который не только определяет контекст строки, но и задает строго определенное значение (фильтр) в этом контексте строки.For example, to further narrow down the values to include in a calculation, you can apply a filter context, which not only specifies the row context, but also specifies only a particular value (filter) in that row context.

Контекст фильтра легко увидеть в отчетах.Filter context is easily seen in your reports. Например, добавляя в визуализацию TotalCost (итоговую стоимость), а затем добавляя год и регион, вы задаете контекст фильтра, который выбирает подмножество данных на основе указанного года и региона.For example, when you add TotalCost to a visualization, and then add Year and Region, you are defining a filter context that selects a subset of data based on a given year and region.

Почему контекст фильтра так важен в DAX?Why is filter context so important to DAX? Хотя контекст фильтра проще всего применять путем добавления полей в визуализацию, его также можно использовать в формуле DAX путем определения фильтра с помощью функций, таких как ALL, RELATED, FILTER, CALCULATE, в отношениях, а также в других мерах и столбцах.Because while filter context can most easily be applied by adding fields to a visualization, filter context can also be applied in a DAX formula by defining a filter using functions such as ALL, RELATED, FILTER, CALCULATE, by relationships, and by other measures and columns. Например, рассмотрим следующую формулу в мере с именем Store Sales (Продажи в магазине).For example, let’s look at the following formula in a measure named Store Sales:

Чтобы лучше понять эту формулу, мы можем разбить ее, как и другие формулы.To better understand this formula, we can break it down, much like with other formulas.

Эта формула содержит следующие элементы синтаксиса.This formula includes the following syntax elements:

A.A. Имя меры Store Sales (Продажи в магазине).The measure name Store Sales.

B.B. Оператор знака равенства (=) обозначает начало формулы.The equals sign operator (=) indicates the beginning of the formula.

C.C. Функция CALCULATE вычисляет выражение, переданное в качестве аргумента, в контексте, который изменяется заданными фильтрами.The CALCULATE function evaluates an expression, as an argument, in a context that is modified by the specified filters.

D.D. В скобки () заключается выражение, содержащее один или несколько аргументов.Parenthesis () surround an expression containing one or more arguments.

E.E. Мера [Total Sales] (Всего продаж) в той же таблице, что и выражение.A measure [Total Sales] in the same table as an expression. Мера Total Sales (Всего продаж) имеет формулу: = СУММ(Sales[SalesAmount]).The Total Sales measure has the formula: =SUM(Sales[SalesAmount]).

F.F. Запятая (,) отделяет первый аргумент-выражение от аргумента-фильтра.A comma (,) separates the first expression argument from the filter argument.

G.G. Полное имя ссылочного столбца Channel[ChannelName].The fully qualified referenced column, Channel[ChannelName]. Это наш контекст строки.This is our row context. Каждая строка в этом столбце указывает канал: Store, Online и т. п.Each row in this column specifies a channel: Store, Online, etc.

H.H. Конкретное значение Store в качестве фильтра.The particular value, Store as a filter. Это наш контекст фильтра.This is our filter context.

Эта формула гарантирует, что вычисляется сумма только значений продаж, определенных мерой Total Sales (Всего продаж), только для тех строк, в столбце Channel[ChannelName] которых имеется значение «Store», заданное в качестве фильтра.This formula ensures only sales values defined by the Total Sales measure are calculated only for rows in the Channel[ChannelName] column with the value “Store”, as a filter.

Как можно себе представить, возможность задания контекста фильтра в формуле значительно и мощно расширяет функциональность.As you can imagine, being able to define filter context within a formula has immense and powerful capabilities. Возможность ссылаться на определенное значение в связанной таблице — лишь один пример.Being able to reference only a particular value in a related table is just one such example. Не беспокойтесь, если вы пока еще не полностью разобрались в контексте.Don’t worry if you do not completely understand context right away. По мере создания собственных формул вы сможете лучше понять и сам контекст и то, и почему он так важен в DAX.As you create your own formulas, you will better understand context and why it’s so important in DAX.

Быстрый тест по контекстуContext QuickQuiz

  1. Каковы два типа контекста?What are the two types of context?
  2. Что такое контекст фильтра?What is filter context?
  3. Что такое контекст строки?What is row context?

Ответы приведены в конце этой статьи.Answers are provided at the end of this article.

СводкаSummary

Теперь, когда у вас есть базовое представление о наиболее важных понятиях в DAX, можно начать самостоятельно создавать формулы DAX для мер.Now that you have a basic understanding of the most important concepts in DAX, you can begin creating DAX formulas for measures on your own. Изучение DAX действительно может показаться несколько сложным, но существует множество ресурсов, доступных пользователю.DAX can indeed be a little tricky to learn, but there are many resources available to you. Прочтя эту статью и поэкспериментировав с созданием нескольких собственных формул, вы можете изучить другие понятия и формулы DAX, помогающие решать ваши бизнес-задачи.After reading through this article and experimenting with a few of your own formulas, you can learn more about other DAX concepts and formulas that can help you solve your own business problems. Существует много доступных ресурсов DAX. Наиболее важным является справочник по выражениям анализа данных (DAX).There are many DAX resources available to you; most important is the Data Analysis Expressions (DAX) Reference.

DAX используется уже несколько лет в других средствах бизнес-аналитики Майкрософт, таких как Power Pivot и табличные модели служб Analysis Services табличной модели, так что там имеется много полезных сведений.DAX has been around for several years in other Microsoft BI tools such as Power Pivot and Analysis Services Tabular models, so there’s a lot of great information out there. Дополнительные сведения можно также найти в книгах, технических документах и блогах корпорации Майкрософт и ведущих специалистов в области бизнес-аналитики.You can find more information in books, whitepapers, and blogs from both Microsoft and leading BI professionals. Также рекомендуется посетить вики-сайт Центра ресурсов DAX в TechNet.The DAX Resource Center Wiki on TechNet is also a great place to start.

Ответы для кратких тестовQuickQuiz answers

СинтаксисSyntax:

  1. Проверяет и вводит меру в модели.Validates and enters the measure into the model.
  2. Квадратные скобки [].Brackets [].

ФункцииFunctions:

  1. Таблица и столбец.A table and a column.
  2. Да.Yes. Формула может содержать до 64 вложенных функций.A formula can contain up to 64 nested functions.
  3. Текстовые функции.Text functions.

КонтекстContext:

  1. Контекст строки и контекст фильтра.Row context and filter context.
  2. Один или несколько фильтров в вычислении, которое определяет одно значение.One or more filters in a calculation that determines a single value.
  3. Текущая строка.The current row.