Power BI Desktop における DAX の基本事項DAX basics in Power BI Desktop


この記事は、Power BI Desktop を初めて使用するユーザー向けです。This article is for users new to Power BI Desktop. さまざまな基本的な計算とデータ分析の問題を解決するために Data Analysis Expressions (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.

DAX とはWhat is DAX?

DAX は、関数、演算子、および定数を集めたもので、これらを数式または式の中で使用して、1 つまたは複数の値を計算して返すことができます。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.


Microsoft Excel で数式を作成する操作に慣れていれば、その知識が DAX を理解するうえで役立ちます。You might already be familiar with creating formulas in Microsoft Excel. しかし、Excel の数式の使用経験がない場合でも、ここで説明する概念は、DAX の数式を作成し、実世界での BI の問題を解決するのに役立ちます。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 Sample for Power BI Desktop Preview ファイルを使用します。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 について説明するにあたり、この記事では次の 3 つの基本的な概念を土台にします:構文関数コンテキストWe will frame our understanding of DAX around three fundamental concepts: Syntax, Functions, and Context. もちろん、DAX にはこれ以外にも重要な概念がありますが、これら 3 つの概念を理解することは、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.


独自の数式を作成する前に、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. かっこ () は、1 つ以上の引数を含む式を囲みます。Parenthesis () surround an expression containing one or more arguments. すべての関数には、少なくとも 1 つの引数が必要です。All functions require at least one argument. 引数は、関数に値を渡します。An argument passes a value to a function.

E.E. 参照先のテーブルは Sales です。The referenced table Sales.

F.F. Sales テーブル内の参照先の列は [SalesAmount] です。The referenced column [SalesAmount] in the Sales table. この引数により、合計を集計する列を SUM 関数に伝えます。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:

" "Total Sales" という名前のメジャーについて、Sales テーブル内の [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. Power BI Desktop の DAX エディターには、適切な要素を選択できるように支援し、正しい構文で数式を作成できるようにする提案機能があります。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 Sample 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. 数式バーで、新しいメジャー名として「Previous Quarter Sales」と入力して、"Measure" をそれに置き換えます。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.

    CALCULATE 関数は、CALCULATE 関数に渡す引数に基づいて、合計する金額をフィルター処理するために使用します。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. CALCULATE 関数には、少なくとも 2 つの引数が必要です。The CALCULATE function has at least two arguments. 1 つ目の引数は評価する式、2 つ目の引数はフィルターです。The first is the expression to be evaluated, and the second is a filter.

  4. CALCULATE 関数の始めかっこ ( の後に、SUM ともう 1 つ始めかっこ ( を入力します。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 ). これは、CALCULATE 関数に対する最初の引数となる式です。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 というタイム インテリジェンス関数を使用すると、前の四半期にフィルター処理して SUM の結果を計算できます。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].

    PREVIOUSQUARTER 関数には、1 つの引数として、連続した日付範囲を含む列を指定します。The PREVIOUSQUARTER function has one argument, a column containing a contiguous range of dates. この場合、これは Calendar テーブルの DateKey 列になります。In our case, that's the DateKey column in the Calendar table.

  8. PREVIOUSQUARTER 関数および CALCULATE 関数に渡された両方の引数が、2 つの閉じかっこ )) の入力で閉じられていることを確認してください。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:

    Previous Quarter Sales = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))Previous Quarter Sales = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))

  9. 数式バーのチェック マーク をクリックするか、Enter キーを押して、数式を検証し、それをモデルに追加します。Click the checkmark in the formula bar or press Enter to validate the formula and add it to the model.

これで完成です。You did it! DAX を使用して、ある程度複雑なメジャーを 1 つ作成できました。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. まず、この式には 2 つの関数が含まれています。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. その場合、引数として 1 つのフィルターを選択します。実際には、フィルターは別の関数の結果です。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.

最後に、CALCULATE 関数を使用しました。Finally, you used the CALCULATE function. これは、DAX で最も強力な関数の 1 つです。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. CALCULATE 関数について説明するのはこの記事の範囲外ですが、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 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 関数の多くが Excel 関数に似ていると感じるかもしれません。ただし、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 関数では、Excel での VLOOKUP のようには、セルまたはセル範囲を参照することがありません。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 関数の詳細について学ぶ最適な資料の 1 つは、「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. 1 つの数式に複数の関数を含めることはできますか?Can a formula contain more than one function?
  3. 2 つのテキスト文字列を連結して 1 つの文字列にするために使用する関数のカテゴリは何ですか?What category of functions would you use to concatenate two text strings into one string?

答えは、この記事の最後に記載します。Answers are provided at the end of this article.


コンテキストは、理解しておくべき最も重要な DAX の概念の 1 つです。Context is one of the most important DAX concepts to understand. DAX には、行コンテキストとフィルター コンテキストという 2 種類のコンテキストがあります。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. フィルター コンテキストを最も簡単に考えるとすると、結果または値を決定する計算において適用される 1 つまたは複数のフィルターのことです。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 を追加し、さらに Year と Region を追加すると、特定の年度と地域に基づいてデータのサブセットを選択するフィルター コンテキストを定義したことになります。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? フィルター コンテキストを適用する最も簡単な方法は視覚エフェクトにフィールドを追加することですが、フィルター コンテキストは ALL、RELATED、FILTER、CALCULATE などの関数を使用してフィルターを定義したり、リレーションシップによって定義したり、他のメジャーや列によって定義したりする DAX 数式の中でも適用できるためです。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. かっこ () は、1 つ以上の引数を含む式を囲みます。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 の数式は、=SUM(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. コンテキストの 2 つの種類には何がありますか?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.


ここまでで、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 リソースは多数ありますが、最も重要なものは「Data Analysis Expressions (DAX) リファレンス」です。There are many DAX resources available to you; most important is the Data Analysis Expressions (DAX) Reference.

Power Pivot や Analysis Services 表形式モデルなどの Microsoft BI ツールで DAX が利用されるようになって数年が経ち、多くの情報が入手可能になりました。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. また、Microsoft や指導的な BI プロフェッショナルが執筆した書籍、ホワイトペーパー、およびブログからも、さらに詳細な情報を知ることができます。You can find more information in books, whitepapers, and blogs from both Microsoft and leading BI professionals. さらに、TechNet の DAX リソース センター Wiki から開始するのもよいでしょう。The DAX Resource Center Wiki on TechNet is also a great place to start.

クイッククイズの答えQuickQuiz answers


  1. メジャーを検証し、モデルに入力します。Validates and enters the measure into the model.
  2. 角かっこ [] です。Brackets [].


  1. テーブルと列です。A table and a column.
  2. はい。Yes. 数式には最大 64 個の入れ子になった関数を含めることができます。A formula can contain up to 64 nested functions.
  3. テキスト関数Text functions.


  1. 行コンテキストとフィルター コンテキストです。Row context and filter context.
  2. 単一の値を決定するための計算に含まれる 1 つ以上のフィルターのことです。One or more filters in a calculation that determines a single value.
  3. 現在の行のことです。The current row.