Excel-dax-functions
Excel DAX-関数
ほとんどの* DAX関数*には、Excel関数と同じ名前と機能があります。 ただし、DAX関数は、DAXデータ型を使用し、テーブルと列を操作するように変更されています。
DAXには、Excelにはない追加機能がいくつかあります。 これらのDAX関数は、データモデルのリレーショナルデータベースの側面に関連付けられた関係に基づくルックアップ、再帰的な計算の実行、動的な集計の実行、タイムインテリジェンスを使用した計算など、特定の目的で提供されます。
この章では、DAX言語でサポートされている機能について学びます。 これらのDAX関数の使用方法の詳細については、このチュートリアルライブラリのチュートリアル– DAX関数を参照してください。
DAX関数とは何ですか?
DAX関数は、データモデルのテーブルのデータに対してさまざまなアクションを実行できるようにするために、DAX言語で提供される組み込み関数です。 前述のように、DAXはデータ分析およびビジネスインテリジェンスの目的で使用され、データから洞察を抽出、同化、および導出するためのサポートが必要です。 データモデルに基づいたDAX関数は、DAX言語とDAX関数の使用法を理解すると、ジョブを簡単にするこれらのユーティリティを提供します。
Excel関数と DAX関数
認識しているExcel関数とDAX関数には特定の類似点があります。 ただし、特定の違いもあります。 これらを明確にする必要があります。そのため、DAX関数の使用や、DAX関数を含むDAX数式の記述を間違えないようにすることができます。
Excel関数とDAX関数の類似点
- 多くのDAX関数には、Excel関数と同じ名前と同じ一般的な動作があります。
- DAXには、Excelの配列およびベクトル検索関数に類似した検索関数があります。
Excel関数とDAX関数の違い
- DAX関数は異なるタイプの入力を受け取るように変更されており、DAX関数の一部は異なるデータタイプを返す場合があります。 したがって、これらの関数の名前は同じですが、これらの関数の使用法を個別に理解する必要があります。 このチュートリアルでは、Excel関数との混同を避けるために、DAXで始まるすべてのDAX関数を見つけます。
- 必要な変更を加えない限り、Excelの式でDAX関数を使用したり、DAXでExcelの式/関数を使用したりすることはできません。
- Excel関数は、参照としてセル参照またはセル範囲を取ります。 DAX関数は、セル参照またはセル範囲を参照として使用することはありませんが、代わりに列またはテーブルを参照として使用します。
- Excelの日付と時刻の関数は、シリアル番号として日付を表す整数を返します。 DAXの日付と時刻の関数は、ExcelではなくDAXにあるdatetimeデータ型を返します。
- Excelにはテーブルを返す関数はありませんが、一部の関数は配列を処理できます。 DAX関数の多くは、完全なテーブルと列を簡単に参照して計算を実行し、テーブルまたは値の列を返すことができます。 DAXのこの機能により、DAXが使用されるPower Pivot、Power View、およびPower BIに電力が追加されます。
- DAXルックアップ関数では、テーブル間に関係が確立されている必要があります。
- Excelは、データの列でバリアントデータ型をサポートしています。 列に異なるデータ型のデータを含めることができます。 一方、DAXは、テーブルの列のデータが常に同じデータ型であると想定しています。 データが同じデータ型ではない場合、DAXは列全体を、列内のすべての値に最適なデータ型に変更します。 ただし、データがインポートされ、この問題が発生した場合、DAXはエラーにフラグを立てることができます。
DAXデータ型とデータ型のキャストについては、「DAX構文リファレンス」の章を参照してください。
DAX関数の種類
DAXは、次の種類の関数をサポートしています。
- DAXテーブル値関数
- DAXフィルター関数
- DAX集計関数
- DAXタイムインテリジェンス関数
- DAXの日付と時刻の関数
- DAX情報関数
- DAX論理関数
- DAXの数学およびトリガー関数
- DAXその他の機能
- DAX親および子関数
- DAX統計関数
- DAXテキスト関数
このセクションでは、関数カテゴリレベルでDAX関数について学習します。 DAX関数の構文の詳細と、DAX関数が何を返し、何を行うかについては、このチュートリアルライブラリの「DAX関数」チュートリアルを参照してください。
DAXタイムインテリジェンス関数とDAXフィルター関数は強力であり、特別な言及が必要です。 詳細については、「章-DAXタイムインテリジェンスとDAXフィルター関数について」を参照してください。
DAXテーブル値関数
多くのDAX関数は、テーブルを入力テーブルまたは出力テーブルとして使用するか、両方を実行します。 これらのDAX関数は、DAXテーブル値関数と呼ばれます。 テーブルには単一の列を含めることができるため、DAXテーブル値関数も入力として単一の列を受け取ります。 次のタイプのDAXテーブル値関数があります-
- DAX集計関数
- DAXフィルター関数
- DAXタイムインテリジェンス関数
DAXテーブル値関数を理解することは、DAX数式を効果的に記述するのに役立ちます。
DAX集計関数
DAX集計関数は、テーブルの行で式を集計し、計算に役立ちます。
以下はいくつかのDAX集計関数です-
以下に、DAX集計関数のリストを示します。
- ADDCOLUMNS(<テーブル>、<名前>、<式>、[<名前>、<式>]…)
- 平均(<列>)
- AVERAGEA(<列>)
- AVERAGEX(<テーブル>、<式>)
- COUNT(<列>)
- COUNTA(<列>)
- COUNTAX(<テーブル>、<式>)
- COUNTBLANK(<列>)
- COUNTROWS(<テーブル>)
- COUNTX(<テーブル>、<式>)
- CROSSJOIN(<table1>、<table2>、[<table3>]…)
- DISTINCTCOUNT(<列>)
- GENERATE(<テーブル1>、<テーブル2>)
- GENERATEALL(<テーブル1>、<テーブル2>)
- MAX(<列>)
- MAXA(<列>)
- MAXX(<テーブル>、<式>)
- MIN(<列>)
- MINA(<列>)
- MINX(<テーブル>、<式>)
- PRODUCT(<列>)
- PRODUCTX(<テーブル>、<式>)
- ROW(<名前>、<式>、[<名前>、<式>]…)
- SELECTCOLUMNS(<テーブル>、<名前>、<スカラー式>、
- [<name>、<scalar_expression>]…)
- SUM(<列>)
- SUMMARIZE(<テーブル>、<groupBy_columnName>、[<groupBy_columnName>]…、[<name>、<expression>]…)
- SUMX(<テーブル>、<式>)
- TOPN(<n_value>、<table>、<orderBy_expression>、[<order>]、[<orderBy_expression>、[<order>]]…)
DAXフィルター関数
DAXフィルター関数は、列、テーブル、または現在の行に関連する値を返します。 DAXフィルター関数を使用して、特定のデータ型を返し、関連テーブルの値を検索し、関連値でフィルター処理できます。 DAXルックアップ関数は、テーブルとテーブル間の関係を使用して機能します。 DAX Filter関数を使用すると、データコンテキストを操作して動的な計算を作成できます。
以下は、いくつかのDAXフィルター機能です-
以下に、DAXフィルター関数のリストを示します。
- ADDMISSINGITEMS(<showAllColumn>、[<showAllColumn>]…、<table>、<groupingColumn>、[<groupingColumn>]…[filterTable]…)
- ALL(\ {<table> | <column>、[<column>]、[<column>]…})
- ALLEXCEPT(<テーブル>、<列>、[<列>]…)
- ALLNOBLANKROW(<テーブル> | <列>)
- ALLSELECTED([<テーブル名> | <列名>])
- 計算(<式>、<フィルター1>、<フィルター2>…)
- CALCULATETABLE(<式>、<フィルター1>、<フィルター2>…)
- CROSSFILTER(<columnName1>、<columnName2>、<direction>)
- DISTINCT(<列>)
- EARLIER(<列>、<番号>)
- EARLIEST(<列>)
- FILTER(<テーブル>、<フィルター>)
- FILTERS(<列名>)
- HASONEFILTER(<列名>)
- HASONEVALUE(<列名>)
- ISCROSSFILTERED(<列名>)
- ISFILTERED(<列名>)
- キープフィルター(<式>)
- RELATED(<列>)
- RELATEDTABLE(<テーブル名>)
- SUBSTITUTEWITHINDEX(<テーブル>、<indexColumnName>、<indexColumnsTable>、<orderBy_expression>、[<order>]、[<orderBy_expression>、[<order>]]…])
- USERELATIONSHIP(<列名1>、<列名2>)
- VALUES(<TableNameOrColumnName>)
DAXタイムインテリジェンス関数
DAX Time Intelligence関数は、日付のテーブルを返すか、日付のテーブルを使用して集計を計算します。 これらのDAX関数は、日、月、四半期、年などの期間を使用してデータを操作できるようにすることで、ビジネスインテリジェンス分析のニーズをサポートする計算を作成するのに役立ちます。
以下はいくつかのDAXタイムインテリジェンス機能です-
以下に、DAXタイムインテリジェンス関数のリストを示します。
- CLOSINGBALANCEMONTH(<式>、<日付> [、<フィルター>])
- CLOSINGBALANCEQUARTER(<式>、<日付>、[<フィルター>])
- CLOSINGBALANCEYEAR(<式>、<日付>、[<フィルター>]、[<年の終了日>])
- DATEADD(<dates>、<number_of_intervals>、<interval>)
- DATESBETWEEN(<日付>、<開始日>、<終了日>)
- DATESINPERIOD(<dates>、<start_date>、<number_of_intervals>、<interval>)
- DATESMTD(<日付>)
- DATESQTD(<日付>)
- DATESYTD(<日付>、[<年の終了日>])
- ENDOFMONTH(<日付>)
- ENDOFQUARTER(<日付>)
- ENDOFYEAR(<日付>、[<年の終了日>])
- FIRSTDATE(<日付>)
- FIRSTNONBLANK(<列>、<式>)
- LASTDATE(<日付>)
- LASTNONBLANK(<列>、<式>)
- 翌日(<日付>)
- NEXTMONTH(<日付>)
- NEXTQUARTER(<日付>)
- NEXTYEAR(<日付>、[<年の終了日>])
- OPENINGBALANCEMONTH(<式>、<日付>、[<フィルター>])
- OPENINGBALANCEQUARTER(<式>、<日付>、[<フィルター>])
- OPENINGBALANCEYEAR(<式>、<日付>、[<フィルター>]、[<年の終了日>])
- 並列期間(<日付>、<間隔の数>、<間隔>)
- PREVIOUSDAY(<日付>)
- PREVIOUSMONTH(<日付>)
- PREVIOUSQUARTER(<日付>)
- PREVIOUSYEAR(<日付>、[<年の終了日>])
- SAMEPERIODLASTYEAR(<日付>)
- STARTOFMONTH(<日付>)
- STARTOFQUARTER(<日付>)
- STARTOFYEAR(<日付>)
- TOTALMTD(<式>、<日付>、[<フィルター>])
- TOTALQTD(<式>、<日付>、[<フィルター>])
- TOTALYTD(<式>、<日付>、[<フィルター>]、[<年の終了日>])
DAXの日付と時刻の関数
DAXの日付と時刻の関数は、Excelの日付と時刻の関数に似ています。 ただし、DAXの日付と時刻の関数は、DAXの日時データ型に基づいています。
以下は、DAXの日付と時刻の関数です-
以下に、DAXの日付と時刻の関数のリストを示します。
- DATE(<年>、<月>、<日>)
- DATEVALUE(date_text)
- DAY(<日付>)
- EDATE(<開始日>、<月>)
- EOMONTH(<開始日>、<月>)
- HOUR(<datetime>)
- MINUTE(<datetime>)
- MONTH(<datetime>)
- NOW()
- SECOND(<時間>)
- TIME(時間、分、秒)
- TIMEVALUE(time_text)
- 今日()
- WEEKDAY(<date>、<return_type>)
- WEEKNUM(<date>、<return_type>)
- YEAR(<日付>)
- YEARFRAC(<開始日>、<終了日>、<ベース>)
DAX情報関数
DAX情報関数は、引数として提供されるセルまたは行を調べて、値が予想されるタイプと一致するかどうかを通知します。
以下は、いくつかのDAX情報機能です-
以下は、DAX情報関数のリストです。
- CONTAINS(<テーブル>、<列名>、<値>、[<列名>、<値>]…)
- CUSTOMDATA()
- ISBLANK(<値>)
- ISERROR(<値>)
- ISEVEN(数値)
- ISLOGICAL(<値>)
- ISNONTEXT(<値>)
- ISNUMBER(<値>)
- ISONORAFTER(<スカラー式>、<スカラー式>、[ソート順]、[<スカラー式>、<スカラー式>、[ソート順]]…)
- ISTEXT(<値>)
- LOOKUPVALUE(<result_columnName>、<search_columnName>、<search_value>、[<search_columnName>、<search_value>]…)
- USERNAME()
DAX論理関数
DAX論理関数は、式の値に関する情報を返します。 たとえば、DAX TRUE関数を使用すると、評価している式がTRUE値を返すかどうかを知ることができます。
以下はDAX論理関数です-
以下は、DAX論理関数のリストです。
- AND(<論理1>、<論理2>)
- FALSE()
- IF(logical_test>、<value_if_true>、value_if_false)
- IFERROR(値、value_if_error)
- NOT(<論理>)
- OR(<論理1>、<論理2>)
- SWITCH(<式>、<値>、<結果>、[<値>、<結果>]…、[<else>])
- TRUE()
DAXの数学およびトリガー関数
DAXの数学関数と三角関数は、Excelの数学関数と三角関数に非常に似ています。
以下は、いくつかのDAX MathおよびTrig関数です-
以下に示すのは、DAX MathおよびTrig関数のリストです。
- ABS(<番号>)
- ACOS(数値)
- ACOSH(数値)
- ASIN(数値)
- ASINH(数値)
- ATAN(数値)
- ATANH(数値)
- CEILING(<number>、<significance>)
- COMBIN(number、number_chosen)
- COMBINA(number、number_chosen)
- COS(数値)
- COSH(数値)
- CURRENCY(<値>)
- DEGREES(角度)
- DIVIDE(<分子>、<分母>、[<代替結果>])
- EVEN(数値)
- EXP(<番号>)
- FACT(<番号>)
- FLOOR(<number>、<significance>)
- GCD(数値1、[数値2]、…)
- INT(<番号>)
- ISO.CEILING(<number>、[<significance>])
- LCM(number1、[number2]、…)
- LN(<番号>)
- LOG(<number>、<base>)
- LOG10(<番号>)
- INT(<番号>)
- MROUND(<番号>、<複数>)
- 奇数)
- PI()
- POWER(<番号>、<電源>)
- PRODUCT(<列>)
- PRODUCTX(<テーブル>、<式>)
- QUOTIENT(<分子>、<分母>)
- RADIANS(角度)
- RAND()
- RANDBETWEEN(<下>、<上>)
- ROUND(<number>、<num_digits>)
- ROUNDDOWN(<number>、<num_digits>)
- ROUNDUP(<number>、<num_digits>)
- SIN(数値)
- SINH(数値)
- SIGN(<番号>)
- SQRT(<番号>)
- SUM(<列>)
- SUMX(<テーブル>、<式>)
- TAN(数値)
- TANH(数値)
- TRUNC(<number>、<num_digits>)
DAXその他の機能
これらのDAX関数は、他のほとんどの関数が属するカテゴリでは定義できない独自のアクションを実行します。
以下はいくつかのDAXその他の機能です-
以下に、DAXその他の関数のリストを示します。
- EXCEPT(<table_expression1>、<table_expression2>
- GROUPBY(<テーブル>、[<groupBy_columnName1>]、[<name>、<expression>]…)
- INTERSECT(<table_expression1>、<table_expression2>)
- ISEMPTY(<table_expression>)
- NATURALINNERJOIN(<leftJoinTable>、<rightJoinTable>)
- NATURALLEFTOUTERJOIN(<leftJoinTable>、<rightJoinTable>)
- SUMMARIZECOLUMNS(<groupBy_columnName>、[<groupBy_columnName>]…、[<filterTable>]…、[<name>、<expression>]…)
- UNION(<table_expression1>、<table_expression2>、[<table_expression>]…)
- VAR <名前> = <式>
DAX親および子関数
DAXの親および子関数は、データモデルで親/子階層として表示されるデータの管理に役立ちます。
以下は、DAXのいくつかの親関数と子関数です-
以下に、DAXの親関数と子関数のリストを示します。
- PATH(<ID_columnName>、<parent_columnName>)
- PATHCONTAINS(<パス>、<アイテム>)
- PATHITEM(<パス>、<位置>、[<タイプ>])
- PATHITEMREVERSE(<パス>、<位置>、[<タイプ>])
- PATHLENGTH(<パス>)
DAX統計関数
DAX統計関数は、Excel統計関数に非常に似ています。
以下はいくつかのDAX統計関数です-
以下に、DAX統計関数のリストを示します。
- BETA.DIST(x、アルファ、ベータ、累積、[A]、[B])
- BETA.INV(確率、アルファ、ベータ、[A]、[B])
- CHISQ.INV(確率、deg_freedom)
- CHISQ.INV.RT(確率、deg_freedom)
- CONFIDENCE.NORM(alpha、standard_dev、size)
- CONFIDENCE.T(アルファ、standard_dev、サイズ)
- DATATABLE(ColumnName1、DataType1、ColumnName2、DataType2 …、\ {\ {Value1、Value2 …}、\ {ValueN、ValueN + 1 …} …})
- EXPON.DIST(x、lambda、累積)
- GEOMEAN(<列>)
- GEOMEANX(<テーブル>、<式>)
- MEDIAN(<列>)
- MEDIANX(<テーブル>、<式>)
- PERCENTILE.EXC(<列>、<k>)
- PERCENTILE.INC(<列>、<k>)
- PERCENTILEX.EXC(<テーブル>、<式>、k)
- PERCENTILEX.EXC(<テーブル>、<式>、k)
- POISSON.DIST(x、平均、累積)
- RANK.EQ(<値>、<列名> [、<注文>])
- RANKX(<table>、<expression> [、<value> [、<order> [、<ties>]]])
- サンプル(<n_value>、<table>、<orderBy_expression>、[<order>]、[<orderBy_expression>、[<order>]]…)
- STDEV.P(<ColumnName>)
- STDEV.S(<列名>)
- STDEVX.P(<テーブル>、<式>)
- STDEVX.S(<テーブル>、<式>)
- SQRTPI(数値)
- VAR.P(<columnName>)
- VAR.S(<columnName>)
- VARX.P(<テーブル>、<式>)
- VARX.S(<テーブル>、<式>)
- XIRR(<テーブル>、<値>、<日付>、[推測])
- XNPV(<テーブル>、<値>、<日付>、<レート>)
DAXテキスト関数
DAXテキスト関数は、テーブルと列で機能します。 DAX Text関数を使用すると、文字列の一部を返したり、文字列内のテキストを検索したり、文字列値を連結したりできます。 日付、時刻、および数値の形式を制御することもできます。
以下はいくつかのDAX Text関数です-
以下は、DAX Text関数のリストです。
- ブランク()
- CODE(テキスト)
- CONCATENATE(<テキスト1>、<テキスト2>)
- CONCATENATEX(<テーブル>、<式>、[区切り記号])
- EXACT(<テキスト1>、<テキスト2>)
- FIND(<find_text>、<within_text>、[<start_num>]、[<NotFoundValue>])
- FIXED(<number>、<decimals>、<no_commas>)
- FORMAT(<値>、<フォーマット文字列>)
- LEFT(<テキスト>、<num_chars>)
- LEN(<テキスト>)
- LOWER(<テキスト>)
- MID(<text>、<start_num>、<num_chars>)
- REPLACE(<old_text>、<start_num>、<num_chars>、<new_text>)
- REPT(<text>、<num_times>)
- RIGHT(<テキスト>、<num_chars>)
- SEARCH(<find_text>、<within_text>、[<start_num>]、[<NotFoundValue>])
- SUBSTITUTE(<テキスト>、<古いテキスト>、<新しいテキスト>、<インスタンス番号>)
- TRIM(<テキスト>)
- 上部(<テキスト>)
- VALUE(<テキスト>)