DAX の概要Introduction to DAX

Learn how to create and work with DAX, from an established expert.

これから学習する内容

DAX の概要Introduction to DAX

Power BI へようこそ DAX の概要説明を目的としたガイド付き学習セクションです。Welcome to the Power BI Guided Learning section designed to introduce you to DAX.

DAX とは、Data Analysis Expressions の略であり、Power BI 全体で使用 (また、バックグラウンドで Power BI により使用) される式言語です。DAX stands for Data Analysis Expressions, and it is the formula language used throughout Power BI (it is also used by Power BI behind the scenes). DAX はまた、Microsoft が提供するその他のサービス (Power Pivot や SSAS Tabular など) でも使用されますが、この一連のガイド付き学習のトピックでは、Power BI での DAX の使用方法 (ユーザーが使用できる方法) を中心に説明しています。DAX is also found in other offerings from Microsoft, such as Power Pivot and SSAS Tabular, but this collection of Guided Learning topics focuses on how DAX is used - and can be used by you - in Power BI.

DAX およびこのガイド付き学習ビデオ シリーズDAX and this Guided Learning video series

このガイド付き学習セクションの目的は、DAX の基本と基礎を説明することにあります。具体的には、DAX についての考え方、DAX のしくみ、最も便利な機能について、DAX エキスパートとして名高い Alberto Ferrari 氏による説明 (および多くの経験から得られたこと) に基づいて紹介しています。The goal of this Guided Learning section is to teach you DAX basics and fundamentals - how to think about DAX, how it works, and the most useful features as explained (and learned with lots of experience) by a renowned DAX expert, Alberto Ferrari.

Alberto Ferrari 氏のポートレート

DAX に関するこのガイド付き学習セクションのビデオでは、DAX 式言語のしくみという観点で DAX の基礎について説明します。The videos in this Guided Learning section on DAX teaches you DAX basics from the perspective of how the DAX formula language works. このビデオは、DAX 式を一から作成する場合に役に立ちますが、クエリ エディターでクエリを作成するときに Power BI によってそれらの DAX 式がどのように作成されるのかを理解するのにも大いに役立ちます。This is useful when creating DAX formulas from scratch, but it's also very useful for understanding how Power BI creates those DAX formulas as you create queries in the Query Editor.

ビデオ - DAX の概要In this video - introduction to DAX

DAX の概念はわかりやすく単純ですが、DAX は強力です。DAX concepts are simple and straightforward, but DAX is powerful. DAX では、いくつか独自のプログラミング概念とパターンを使用しており、すべてを理解して活用するのが難しいことがあります。DAX uses some unique programming concepts and patterns which can make it difficult to fully use and understand. DAX に関しては、従来の言語習得法が最適とは言えない場合があります。したがってこのビデオでは、後で Power BI の作業をする際に役立つ概念と理論について解説することを目的とします。Traditional ways of learning languages may not be the best approach to DAX, so the goal of this video is to teach you concepts and theory that will help later on in your Power BI work.

DAX は関数型言語です。これは関数内に完全な実行コードが含まれていることを意味します。DAX is a functional language, which means the full executed code is contained inside a function.

DAX では、入れ子になった他の関数、条件付きステートメント、値の参照を関数に含めることができます。In DAX, functions can contain other, nested functions, conditional statements, and value references. DAX での実行は、最も内側の関数またはパラメーターから開始して、外に向かって進行します。Execution in DAX starts from the innermost function or parameter, and works outward. Power BI では、DAX 式は 1 行に記述されるので、読みやすくするには関数を正しい書式にすることが重要です。In Power BI, DAX formulas are written in a single line, so formatting your functions correctly is important for readability.

DAX はテーブルを使用するように設計されており、基本データ型は、数値その他の 2 つのみです。DAX is designed to work with tables, so it has just two primary data types: Numeric and Other. 数値には整数10 進数通貨を含めることができます。Numeric can include integers, decimals, and currency. その他には、文字列バイナリ オブジェクトを含めることができます。Other can include strings and binary objects. これは、ある型の数値で動作するように DAX 関数を構築した場合、他のどの数値データでも確実に動作するということです。This means that if you build your DAX function to work on one type of number, you can be assured that it will work on any other Numeric data.

DAX では演算子のオーバーロードを使用するため、計算でデータ型を混在させて、入力されたデータ型によって異なる結果を出力することができます。DAX uses operator overloading, which means that you can mix data types in your calculations and the results will change based on the type of data used in the inputs. 変換は自動的に行われます。Conversion happens automatically. したがって、Power BI で使用している列のデータ型を知っておく必要はありません。一方で、予期しない変換が発生する可能性もあります。This means you don't have to know the data types of the columns you're working with in Power BI, but it also means that sometimes conversion can happen in unexpected ways. 演算子が予想どおりに動作しているのを確認するため、使用しているデータをよく理解することをお勧めします。It's good practice to understand the data you are using to ensure that your operators are behaving as anticipated.

データ型のうち、Power BI で使用する可能性が特に高いのは DateTime です。There is one data type in particular that you'll likely be working with a lot in Power BI: DateTime. DateTime は、整数と小数の両方の部分を持つ浮動小数点値として格納されます。DateTime is stored as a floating point value with both integer and decimal parts. DateTime は、1900 年 3 月 1 日より後の任意の期間の計算に正確に使用できます。DateTime can be used accurately for calculations of any time period after March 1, 1900.

ビデオ コンテンツは、SQLBI 社の Alberto Ferrari 氏のご厚意によるものです。Video content courtesy of Alberto Ferrari, SQLBI

DAX の計算タイプDAX calculation types

DAX を使用して作成できる計算には主に次の 2 つがあります。There are two primary calculations you can create using DAX:

  • 計算列calculated columns
  • 計算メジャーcalculated measures

これらのいずれかの作成に取りかかる前に、テーブルと列に関する DAX 構文を正確に理解しておくことをお勧めします。これらの構文は、計算列または計算メジャーを作成する際に使用します。Before digging into creating either of those, it's good to have a firm grasp on DAX syntax for tables and columns, which you will use when creating either calculated columns or calculated measures.

DAX のテーブル名および列名前の構文DAX table and column name syntax

新しい列または新しいメジャーのいずれを作成する場合も、DAX でのテーブル名の一般的な形式を理解しておくことが重要です。Whether you're creating a new column or measure, it's important to know the general format of table names in DAX:

'Table Name'[ColumnName]

テーブル名にスペースが含まれている場合 (上記のように)、テーブル名を一重の引用符で囲むことが必須です。If there are spaces in the table name (as shown above), the single quotes around the table name are mandatory. テーブル名にスペースが含まれていない場合は、一重の引用符を省略することができ、構文は次のようになります。If the table name has no spaces, the single quotes can be omitted, so the syntax looks like the following:

TableName[ColumnName]

次の図に、Power BI で作成する DAX の数式を示します。The following image shows a DAX formula being created in Power BI:

テーブル名を完全に省略して列名のみを使用することもできますが、関数を明確にする (結果的に、DAX コードが明確になる) のに適した方法とは言えません。You can also omit the table name completely and just use the column name, but this is poor practice for writing clear functions (and thus, for clear DAX code). 列名には常に角かっこを含める必要があります。Column names must always include the square brackets.

常に次の方法に従うことをお勧めします。It's best practice to always do the following:

  • テーブル名に空白を含めないNo spaces in table names
  • 式には常にテーブル名を含める (DAX により許可されてもテーブル名を省略しないでください)Always include the table name in formulas (don't omit it, even though DAX lets you)

計算列の作成Creating calculated columns

計算列は、値をスライスまたはフィルター処理する場合や、テーブルの行ごとに計算をする場合に便利です。Calculated columns are useful when you want to slice or filter on the value, or if you want a calculation for every row in your table.

Power BI Desktop で計算列を作成するには、[モデリング] タブで、[新しい列] を選択します。[データ] ビュー ([レポート] または [リレーションシップ] ビューではなく) で作業することをお勧めします。このビューには、作成した新しい列と数式バーが表示され、DAX 数式をすぐに作成できるからです。You can create calculated columns in Power BI Desktop by selecting New Column from the Modeling tab. It's best to be in Data view (rather than Report or Relationships view), since you can see the new column created and the Formula Bar is populated and ready for your DAX formula.

[新しい列] ボタンを選択すると、次の図に示すように、数式バーに基本的な列名 (もちろん、これは数式に適合するように変更) と=演算子が入力され、新しい列がデータ グリッドに表示されます。Once you select the New Column button, the Formula Bar is populated with a basic column name (which you change to suit your formula, of course) and the = operator, and the new column appears in the data grid, as shown in the following image.

計算列の必須の要素は次のとおりです。The required elements for a calculated column are the following:

  • 新しい列名a new column name
  • 少なくとも 1 つの関数または式at least one function or expression

計算列の数式でテーブルまたは列を参照する場合、テーブルの行を指定する必要はありません。Power BI が計算ごとに現在の行に対する列を計算します。If you reference a table or column in your calculated column formula, you do not need to specify a row in the table - Power BI calculates the column for the current row for each calculation.

計算メジャーの作成Creating calculated measures

パーセンテージまたは比率を計算する場合や、複雑な集計が必要な場合は、計算メジャーを使用します。Use a calculated measure when you are calculating percentages or ratios, or you need complex aggregations. DAX の式を使用してメジャーを作成するには、[モデリング] タブから [新しいメジャー] ボタンをクリックします。繰り返しになりますが、Power BI Desktop の [データ] ビューで作業することをお勧めします。[データ] ビューには、数式バー が表示され、DAX の数式を容易に作成することができるからです。To create a measure using a DAX formula, select the New Measure button from the Modeling tab. Again, it's best to be in the Data view of Power BI Desktop since it shows the Formula Bar and makes it easy to write your DAX formula.

メジャー の場合は、[フィールド] ウィンドウに新しいメジャー アイコンがそのメジャー名と一緒に表示されます。With measures, you see a new measure icon appear in the Fields pane with the name of the measure. 数式バーに、DAX の式の名前がもう一度入力されます (今回は、メジャーを使用)。The Formula Bar is again populated with the name of your DAX formula (this time, with your measure).

計算メジャーの必須の要素は、計算列の場合と同じです。The required elements for a calculated measure are the same as they are for a calculated column:

  • 新しいメジャーの名前a new measure name
  • 少なくとも 1 つの関数または式at least one function or expression

ビデオ コンテンツは、SQLBI 社の Alberto Ferrari 氏のご厚意によるものです。Video content courtesy of Alberto Ferrari, SQLBI

DAX 関数DAX functions

DAX では、データの整形、形成、あるいは分析に使用できる多くの関数が用意されています。With DAX, there are many functions available to shape, form, or otherwise analyze your data. これらの関数は、次に示すいくつかのカテゴリに分類することができます。These functions can be grouped into a handful of categories:

  • 集計関数Aggregation functions
  • カウント関数Counting functions
  • 論理関数Logical functions
  • 情報関数Information functions
  • テキスト関数Text functions
  • 日付関数Date functions

Excel の場合と同様に、Power BI Desktop の [数式バー] に式の入力を開始すると、使用可能な関数の一覧が表示され、選択する関数を容易に決めることができます。Similar to Excel, when you start typing your formula into the Power BI Desktop Formula Bar, a list of available functions appears to help you determine which available function you want to select. キーボードの上方向キーと下方向キーを使用して、使用可能な関数のいずれかを強調表示すると、簡単な説明が表示されます。And by using the up and down arrow keys on your keyboard, you can highlight any of the available functions, and a brief description is displayed.

Power BI では、これまで入力した文字と一致する関数が表示されます。したがって、「S」を入力すると、S で始まる関数のみが一覧表示されます。Power BI displays the functions that match the letters you've typed so far, so if you type S only functions that begin with S appear in the list. Su」と入力した場合、関数名に Su という文字シーケンスを含む関数のみが一覧に表示されます (名前が Su で始まっていなくても名前に文字シーケンス Su が含まれていれば表示されます)。If you type Su, only functions that contain the letter sequence Su in their name appear in the list (they don't have to start with Su, they just have to contain that letter sequence).

このように DAX を簡単に試してみることができます。また、Power BI で使用できる各種 DAX 関数の一つ一つを簡単に確認することもできます。It's easy to experiment with DAX in this way, and to find each of the various DAX functions that are available in Power BI. 入力を開始するだけで、Power BI が候補を表示してくれます。All you have to do is start typing, and Power BI helps you along.

これで DAX の数式を使い始める方法がわかったので、次にこれらの関数カテゴリを一つ一つ見ていきましよう。Now that we know how to get that DAX formula started, let's take a look at each of these function categories in turn.

集計関数Aggregation functions

DAX には、さまざまな集計関数があります。通常、次の関数がよく使用されます。DAX has a number of aggregation functions, including the following commonly used functions:

  • SUMSUM
  • AVERAGEAVERAGE
  • MINMIN
  • MAXMAX
  • SUMX (およびその他の X 関数)SUMX (and other X functions)

これらの関数は数値列でのみ機能し、一度に集計できる列は一般的に 1 つのみです。These functions work only on numeric columns, and generally can aggregate only one column at a time.

ただし、SUMX など、末尾に "X" が付く特殊な集計関数は、複数の列で機能します。However, special aggregation functions that end in X, such as SUMX, can work on multiple columns. これらの関数は、テーブルを反復処理して行ごとに式を評価します。These functions iterate through the table, and evaluate the expression for each row.

カウント関数Counting functions

頻繁に使用される DAX のカウント関数は、次のとおりです。Often-used counting functions in DAX include the following:

  • COUNTCOUNT
  • COUNTACOUNTA
  • COUNTBLANKCOUNTBLANK
  • COUNTROWSCOUNTROWS
  • DISTINCTCOUNTDISTINCTCOUNT

これらの関数は、個別の値、空でない値、テーブルの行など、さまざまな要素をカウントします。These functions count different elements, such as distinct values, non-empty values, and table rows.

論理関数Logical functions

DAX の論理関数には、次のものがあります。The collection of logical functions in DAX include:

  • ANDAND
  • OROR
  • NOTNOT
  • IFIF
  • IFERRORIFERROR

これらの特殊な関数は、演算子で表現することもできます。These special functions can also be expressed with operators. たとえば、DAX 式では、AND&& に置き換えて入力することができます。For example, AND can be typed as (replaced with) && in your DAX formula.

数式内で 2 つ以上の条件を設定する必要がある場合は、演算子 (&& など) を使用できます。ただし、それ以外では、DAX コードを読みやすくするために、関数名そのもの (AND など) を使用するのが最適です。You can use operators (such as &&) when you need more than two conditions in your formula, but otherwise, it's best practice use the function name itself (such as AND) for readability of your DAX code.

情報関数Information functions

DAX の情報 関数には、次のものがあります。Information functions in DAX include:

  • ISBLANKISBLANK
  • ISNUMBERISNUMBER
  • ISTEXTISTEXT
  • ISNONTEXTISNONTEXT
  • ISERRORISERROR

これらの関数は状況によっては便利な場合もありますが、データ型を指定するには、これらの関数に依存するのでなく、事前に列のデータ型を把握してくことが重要です。While these functions can be situationally useful, there is value in knowing the data type of your columns ahead of time, rather than depending on these functions to provide the data type.

DAX では、値の集計比較の両方に、MAX 関数と MIN 関数を使用します。DAX uses the MAX and MIN functions to both aggregate values, and to compare values.

テキスト関数Text functions

DAX のテキスト関数には、次のものがあります。The text functions in DAX include the following:

  • CONCATENTATECONCATENTATE
  • REPLACEREPLACE
  • SEARCHSEARCH
  • UPPERUPPER
  • FIXEDFIXED

これらのテキスト関数の動作は、同じ名前を持つ Excel 関数の場合とよく似ています。Excel でテキスト関数を処理する方法を理解している場合は、次へ進んでください。These text work very similarly to the Excel functions that have the same name, so if you're familiar with how Excel handles text functions, you're already a step ahead. そうでない場合は、いつでも Power BI でこれらの関数を試して、その動作を確認することができます。If not, you can always experiment with these functions in Power BI, and learn more about how they behave.

日付関数Date functions

DAX には、次の日付関数が含まれています。DAX includes the following Date functions:

  • DATEDATE
  • HOURHOUR
  • NOWNOW
  • EOMONTHEOMONTH
  • WEEKDAYWEEKDAY

これらの関数は、日付の値から情報を計算したり抽出したりする場合に便利ですが、日付テーブルを使用するタイム インテリジェンスには適用されません。While these functions are useful to calculate and extract information from date values, they do not apply to time intelligence, which uses a date table.

ビデオ コンテンツは、SQLBI 社の Alberto Ferrari 氏のご厚意によるものです。Video content courtesy of Alberto Ferrari, SQLBI

DAX 式での変数の使用Using variables in DAX expressions

変数の使用は、DAX 式の中でも強力な部分を占めています。Using variables are an extremely powerful part of a DAX expression.

次の構文を使用して、DAX 式の任意の場所で変数を定義できます。You can define a variable anywhere in a DAX expression, using the following syntax:

VARNAME = RETURNEDVALUE

変数には、テーブル全体を含む任意のデータ型を指定できます。Variables can be any data type, including entire tables.

DAX 式で変数を参照するたびに、Power BI は定義に従ってその値を再計算する必要があることに注意してください。Keep in mind that each time you reference a variable in your DAX expression, Power BI must recalculate its value according to your definition. このため、関数内で変数を繰り返さないようにすることをお勧めします。For this reason, it's good practice to avoid repeating variables in your function.

ビデオ コンテンツは、SQLBI 社の Alberto Ferrari 氏のご厚意によるものです。Video content courtesy of Alberto Ferrari, SQLBI

テーブル リレーションシップと DAXTable relationships and DAX

Power BI では、まったく異なるデータ ソースから取得したテーブルなど、複数のテーブル間にリレーションシップを作成することができます。Power BI lets you create relationships among multiple tables, including tables that come from completely different data sources. 任意のデータ モデルにおけるこのようなリレーションシップは、Power BI Desktop の [リレーションシップ] ビューで確認できます。You can see those relationships for any data model in the Relationships view of Power BI Desktop.

DAX のリレーショナル関数DAX relational functions

DAX には、リレーションシップが確立されたテーブルと対話するのに便利なリレーショナル関数が備わっています。DAX has relational functions that enable you to interact with tables that have established relationships.

DAX 関数を使用して、列の値を返したり、リレーションシップを保っているすべての行を返したりすることができます。You can return the value of a column, or you can return all rows in a relationship using DAX functions.

たとえば、TABLE 関数は、リレーションシップに従って列の値を返します。RELATEDTABLE 関数は、リレーションシップに従い、関連する行のみを含むようにフィルター処理されたテーブル全体を返します。For example, the TABLE function follows relationships and returns the value of a column, while RELATEDTABLE follows relationships, and returns an entire table that is filtered to include only related rows.

RELATED 関数は多対一のリレーションシップで、RELATEDTABLE 関数は一対多のリレーションシップで機能します。The RELATED function works on many-to-one relationships, while RELATEDTABLE is for one-to-many relationships.

リレーショナル関数を使用すると、複数のテーブルにまたがる値を含む式を構築できます。You can use relational functions to build expressions that include values across multiple tables. DAX では、リレーションシップのチェーンの長さに関係なく、これらの関数の結果を返します。DAX will return a result with these functions, regardless of the length of the chain of the relationship.

ビデオ コンテンツは、SQLBI 社の Alberto Ferrari 氏のご厚意によるものです。Video content courtesy of Alberto Ferrari, SQLBI

DAX テーブルとフィルター処理DAX tables and filtering

DAX と Excel の数式言語の間には大きな違いがあります。それは、DAX の場合、式の間での受け渡しの対象が単一の値に制約されるのでなく、テーブル全体を受け渡しできるということです。One significant difference between DAX and the Excel formula language is that DAX allows you to pass entire tables between expressions, rather than being constrained to a single value. 強力な機能として、DAX では、式内でテーブルをフィルター処理し、フィルター処理された値セットを使用できることが挙げられます。One powerful effect is that DAX allows you to filter tables in its expressions, then work with the filtered set of values.

DAX では、まったく新しい計算テーブルを作成し、そのテーブルを他の任意のテーブルと同様に扱うことができます。たとえば、データ モデル内で新しいテーブルと他のテーブルとの間にリレーションシップを作成できます。With DAX, you can create entirely new calculated tables and then treat them like any other table - including creating relationships between them and other tables in your data model.

DAX テーブル関数DAX table functions

DAX には、さまざまなテーブル関数が用意されています。たとえば、次のようなものがあります。DAX has a rich set of table functions, including the following:

  • FILTERFILTER
  • ALLALL
  • VALUESVALUES
  • DISTINCTDISTINCT
  • RELATEDTABLERELATEDTABLE

これらの関数は、値ではなく、テーブル全体を返します。These functions return a full table rather, rather than a value. 通常、テーブル関数の結果は、最終的な値としてではなく、大きな式の一部として後続の分析で使用します。Typically you'll use the results of a table function in further analysis as part of a greater expression, rather than using that returned table a final value. テーブル関数では、列のリレーションシップが結果に継承されることに十分注意してください。It's important to note that When you use a table function, the results inherit the relationships of their columns.

それぞれのテーブル関数がテーブルを使用し、テーブルを返す限り、式内で複数のテーブル関数を組み合わせることができます。You can mix table functions in your expression, as long as each function uses a table and returns a table. たとえば、次の DAX 式があるとします。For example, consider the following DAX expression:

FILTER (ALL (Table), Condition)

その式は、現在のフィルター内容を無視して、テーブル全体にフィルターを適用します。That expression would put a filter over the entirety of Table, ignoring any current filter content.

DISTINCT 関数は、現在のコンテキストでも表示される、列の個別の値を返します。The DISTINCT function returns the distinct values of a column that are also visible in the current context. 上記の DAX 式の例を使用する場合、その式に ALL を使用するとフィルターは無視され、ALLDISTINCT に置き換えると、フィルターが機能します。So touse the above DAX expression example, using ALL in that expression ignores filters, while replacing ALL with DISTINCT would observe them.

DAX での値のカウントCounting values with DAX

Power BI レポート ビルダーに対してよく与えられる質問の 1 つに、One common question that Power BI report builders want to answer is the following:

  • "この列に値がいくつあるか?" という質問があります。How many values do I have for this column?

これは、目の前に表示されているテーブルを見れば簡単に答えられる質問かもしれませんが、DAX では、特にテーブル間にリレーションシップが存在する場合に異なるアプローチが採用されます。That may be a simple question to answer with a table displayed in front of you, but DAX approaches in a different way in a different way, particularly when there's a relationship between tables.

たとえば、Power BI および DAX では、適切に相互参照されていない値が含められます。For example, Power BI and DAX includes values that are not properly cross-indexed. 入力リレーションシップが切断されている場合、DAX は、関連付けられているテーブルにすべてのフィールドが空白の新しい行を追加し、その新しい行をインデックス付けられていない行にリンクして、参照整合性を確保します。If the incoming relationship is broken, DAX adds a new row to the related table that has blanks in every field, and links that new row to the unindexed row to guarantee referential integrity. 関数に空白行が含まれている場合 (ALL を使用した場合によくある)、それらの空白行は、対象の列に対して返される値の数に含められます。If your function includes blank rows, such as is often the case when using ALL, those blank rows will then be included in the number of values returned for that column.

DAX 関数を使用して計算テーブル全体を作成することもできます。You can also create entire calculated tables using DAX functions. DAX を使用して作成する計算テーブルには、名前テーブル関数が必要です。Calculated tables created using DAX require a NAME and a TABLE function. 計算テーブルは、リレーションシップの確立を含め、他のテーブルと同様に使用することができます。Calculated tables can be used like any other table, including establishing relationships.

ビデオ コンテンツは、SQLBI 社の Alberto Ferrari 氏のご厚意によるものです。Video content courtesy of Alberto Ferrari, SQLBI

おめでとうございます

You've completed the Introduction to DAX section of Power BI Guided Learning. What a journey! If you've done these tutorials in sequence, then you've finished all the sections of Guided Learning. Way to go! Now go use Power BI to create compelling reports and dashboards that tell your story.

これまでに学習した内容

共同作成者

  • Davidiseminger
  • olprod
  • Alisha-Acharya