このブログは基本的に、初めてのユーザー向けに設計されています。 と呼ばれる数式言語をすばやく簡単にウォークスルーできるようにすることを目的としています データ分析式(DAX) 。の機能に精通している場合 MSExcel または 、この中の式の多く Power BIDAXの基本 記事はあなたと同じように表示されます。
そうは言っても、ここにすべての不可欠な部分を形成する概念があります 、DAXの最も基本的な概念をよく理解している必要があることを学習した後。
- Power BI DAXの基本:DAXとは何ですか?
- Power BI DAXの基本:どのように機能しますか?
- Power BI DAXの基本:計算された列とメジャー
- Power BI DAXの基本:DAXの関数の種類
- Power BI DAXの基本:最初のメジャーの作成
Power BI DAXの基本:DAXとは何ですか?
では、Power BIDAXの基本から始めましょう。
Power BI Desktopを使用してレポートを作成するのは非常に簡単で、貴重な洞察をすぐに表示できます。
しかし、すべての異なる日付範囲について、すべての製品カテゴリにわたる成長率を分析する必要がある場合はどうでしょうか。または、市場の巨人と比較したあなたの会社の年間成長率を計算する必要がありますか?
DAXを学ぶことは、あなたがあなたのを最大限に活用するのに役立ちます 実際のビジネス上の問題を解決します。
DAXは、モデルにすでに存在するデータを使用して値を計算するための数式の形式にできる関数、演算子、および定数で構成されています。
Power BI DAXには、200を超える関数、演算子、および構成のライブラリが含まれています。そのライブラリは、ほぼすべてのデータ分析のニーズに対応する結果を計算するためのメジャーを作成する際に非常に高い柔軟性を提供します。
Power BI DAXの基本:どのように機能しますか?
まず、これがどのように機能するかを説明しましょう。ほとんどの場合、Power BIDAXの理解を3つの基本的な概念に基づいて組み立てます。 構文 、 環境 、および 機能 。
もちろん、ここには他にも重要な概念がありますが、これら3つを理解することで、スキルを構築するための最良の基盤が提供されます。
構文
ザ・ 構文 数式を構成するさまざまなコンポーネントとその記述方法で構成されます。 Lこの単純なDAX式を見てください。
DAXの公式を理解しようとするとき、各要素を自分が考え、毎日話す言語に分解すると役立つことがよくあります。したがって、この式には次の構文要素が含まれています。
私。 総売上高 メジャー名です。
II。 ザ・ 等号演算子(=) 式の始まりを示します。
III。 和 列のすべての数値を合計し、 売上高[SalesAmount] 。
IV。 これらがあります 括弧 () 1つ以上の引数を含む式を囲むもの。すべての関数には、少なくとも1つの引数が必要です。
V。 販売 参照されるテーブルです。
私達。 アン 引数 関数に値を渡します。参照される列 [売上高] は引数であり、SUM関数はSUMを集計する必要のある列を認識します。
簡単に言えば、次のように読むことができます。 「」 Total Salesという名前のメジャーについて、Salesテーブルの[SalesAmount]列の値の合計を計算(=)します。」
&spadesPower BI DAXエディターには、適切な要素を提案することで構文的に正しい数式を作成するのに役立つ提案機能が含まれています。
環境
環境 3つのDAXコンセプトの中で最も重要なものの1つです。文脈について話すとき、これは2つのタイプのうちの1つを指す場合があります 行コンテキスト そして フィルタコンテキスト 。
主に話している間に使用されます 対策 、 行コンテキスト 最も簡単に現在の行と見なされます。これは、数式にフィルターを適用してテーブル内の単一の行を識別する関数がある場合に適用されます。
フィルタ-コンテキスト Row-Contextよりも理解するのが少し難しいです。 Filter-Contextは、計算に適用される1つ以上のフィルターと最も簡単に考えることができます。ザ・Filter-Contextは、Row-contextの代わりには存在しません。むしろ、前者に加えて適用されます。次のDAX式を見てください。
この式には、次の構文要素が含まれています。
私。 メジャー名 店舗販売 。
II。 ザ・ 等号演算子(=) 式の始まりを示します。
III。 ザ・ 計算する 関数は、引数として式を評価します。
IV。 括弧 () 1つ以上の引数を含む式を囲みます。
V。 対策 【総売上高】 式と同じテーブルにあります。
私達。 に コンマ (、) 最初の式の引数をフィルターの引数から分離します。
あなたは来ていますか。 完全修飾参照列、 Channel [ChannelName] 行コンテキストです。この列の各行は、チャネル、ストア、オンラインなどを指定します。
VIII。 特定の値、 お店 フィルタとして使用されます。これがFilter-Contextです。
この式により、 それ Total Sales Measureは、値が「Store」のChannel [ChannelName]列の行に対してのみフィルターとして計算されます。
機能
機能 事前定義され、構造化され、順序付けられた式です。彼らはを使用して計算を実行します 引数 それらに渡されました。これらの引数には、数値、テキスト、論理値、またはその他の関数を使用できます。
Power BI DAXの基本: 計算された列とメジャー
このブログでは、計算に使用されるPower BIDAXの数式に焦点を当てます。 対策 そして 計算列 。
計算列
Power BI Desktopでデータモデルを作成する場合、新しい列を作成してテーブルを拡張できます。列の内容は、DAX式によって定義され、行ごとに、またはそのテーブル全体の現在の行のコンテキストで評価されます。
ただし、DAXのデータモデルでは、計算されたすべての列がメモリ内のスペースを占有し、テーブルの処理中に計算されます。
この動作は、ユーザーエクスペリエンスの向上に役立ちますが、貴重なRAMを使用するため、各中間計算がRAMに格納され、貴重なスペースを浪費するため、本番環境では悪い習慣になります。
対策
DAXモデルで計算を定義する別の方法があります。これは、行ごとではなく集計値を操作する必要がある場合に役立ちます。これらの計算は測定値です。 DAXの要件の1つは、メジャーをテーブルで定義する必要があることです。ただし、メジャーは実際にはテーブルに属していません。そのため、機能を失うことなく、メジャーをあるテーブルから別のテーブルに移動できます。
計算された列とメジャー
メジャーと計算列はどちらもDAX式を使用します。違いは、評価のコンテキストです。メジャーは、レポートまたはDAXクエリで評価されたセルのコンテキストで評価されますが、計算列は、それが属するテーブル内の行レベルで計算されます。
見た目が似ていても、計算列とメジャーには大きな違いがあります。計算列の値は、データの更新中に計算され、現在の行をコンテキストとして使用します。これは、レポートでのユーザーの操作に依存しません。
したがって、次のことを行う場合は常に、計算列を定義する必要があります。
- 計算結果をスライサーに配置するか、ピボットテーブル(値領域ではなく)またはグラフの軸の行または列に結果を表示するか、結果をDAXクエリのフィルター条件として使用します。
- 現在の行に厳密にバインドされている式を定義します。たとえば、価格*数量は、2つの列の平均または合計では機能しません。
- テキストまたは数字を分類します。たとえば、メジャーの値の範囲。
メジャーは、現在のコンテキストで定義されたデータの集計で機能します。これは、ピボットテーブルでのスライサー、行、列の選択、またはグラフに適用される軸とフィルターなど、レポートで適用されるフィルターによって異なります。
したがって、次のようなユーザーの選択を反映する結果の計算値を表示する場合は常に、メジャーを定義する必要があります。
- 特定のデータの選択で利益率を計算するとき。
- すべての製品と比較した製品の比率を計算するが、年と地域の両方でフィルターを維持する場合。
Power BI DAXの基本: DAXの関数の種類
1.集計関数
MIN
このDAX関数r列内、または2つのスカラー式の間の最小数値を返します。
構文
MIN()
例
=MIN([ResellerMargin])
ミナ
このDAX関数rテキストとして表される論理値と数値を含む、列の最小値を返します。
構文
ミナ()
例
=ミナ((([郵便番号])
MINX
このDAX関数はテーブルの各行の式を評価した結果の最小数値。
構文
例 このDAX関数rテキストとして表される論理値と数値を含む、列の最大値を返します。 構文 例 このDAX関数rテキストとして表される論理値と数値を含む、列の最大値を返します。 構文 例 このDAX関数はテーブルの各行の式を評価した結果の最大数値。 構文 例 このDAX機能は列内のすべての数値をddsします。 構文 例 このDAX関数r列の値の算術平均を返します。 構文 例 このDAX関数rテーブルの各行に対して評価された式の合計を返します。 構文 例 このDAX関数cテーブルに対して評価された一連の式の算術平均を計算します。 構文 例 これは、列内のアイテムの個別の数を返すために使用されるDAX関数です。したがって、同じアイテムが複数ある場合、この関数はそれを単一のアイテムとしてカウントします。 構文 例 これは、列内のアイテムの数を返すために使用されるDAX関数です。したがって、同じアイテムが複数ある場合、この関数はそれを単一のアイテムではなく、個別のアイテムとしてカウントします。 構文 例 これは、空ではない列内のアイテムの数を返すために使用されるDAX関数です。 構文 例 これはDAX関数です指定されたテーブル、または式で定義されたテーブルの行数をカウントします。 構文 例 これはDAX関数です列内の空白セルの数をカウントします。 構文 例 このDAX関数r指定された日付を日時形式で返します。 構文 例 このDAX関数r指定された時間を0から23(12:00 A.M。から11:00 P.M。)までの数値として返します。 構文 例 このDAX関数r現在の日付を返します。 構文 このDAX関数r現在の日付と時刻を日時形式で返します。 構文 このDAX関数r指定された月数の前または後の、月末日の日付と時刻の形式で日付を返します。 構文 例 このDAX関数r与えられた数の絶対値を返します。 構文 例 このDAX関数reの値を指定された数の累乗に変換します。 構文 例 このDAX関数r数の階乗を返します。 構文 例 このDAX関数r指定された数の自然対数を返します。 構文 例 このDAX関数r指定された数値を基にしてログを返します。 構文 例 このDAX関数r円周率の値を返します。 構文 このDAX関数r最初の引数の値を2番目の引数の累乗に変換します。 構文 例 このDAX関数は除算rを実行します商の整数部分を返します。 構文 例 このDAX関数は、指定された数値の符号を返します。 構文 例 このDAX関数r指定された数の平方根を返します。 構文 例 このDAX関数は、2つの式に対して論理AND(論理積)を実行します。 ANDがtrueを返すには、指定された両方の条件が満たされている必要があります。 構文 例 このDAX関数は、2つの式に対して論理OR(論理和)を実行します。 ORがtrueを返すには、指定された2つの条件のいずれかが満たされている必要があります。 構文 例 このDAX関数は、指定された式に対して論理NOT(否定)を実行します。 構文 例 このDAX関数は、引数で指定された条件を満たす入力の一連の入力をテストします。 構文 例 このDAX関数e式を評価し、式がエラーを返した場合は指定された値を返します。 構文 例 このDAX関数後にTRUEまたはFALSEを返しますc値が空白かどうかを確認します。 構文 例 このDAX関数後にTRUEまたはFALSEを返しますc値が数値であるかどうかを確認します。 構文 例 このDAX関数後にTRUEまたはFALSEを返しますc値がテキストであるかどうかを確認します。 構文 例 このDAX関数後にTRUEまたはFALSEを返しますc値が非テキストであるかどうかを確認します。 構文 例 このDAX関数後にTRUEまたはFALSEを返しますc値がエラーであるかどうかを確認します。 構文 例 このDAX関数j2つのテキスト文字列を1つにまとめます。 構文 例 このDAX関数テーブルの各行に対して評価された式の結果。 構文 例 このDAX関数r数値を指定された小数点以下の桁数に丸め、結果をテキストとして返します。 構文 例 このDAX関数指定した文字数に基づいて、テキスト文字列の一部を別のテキスト文字列に置き換えます。 構文 例 このDAX関数r特定のテキスト文字列が最初に見つかった文字数を返します。 構文 例 このDAX関数はすべて大文字のテキスト文字列。 構文 例 前提条件: 開く必要があります この特定のPowerBIデスクトップファイル 。 これがあなたの最初になると思いますので、私はあなたが従うためにこのビットを非常に詳細に書きます。 のフィールドリスト レポートビュー 、を右クリックします 販売 テーブル、続いて 新しい措置 。 交換 測定する 新しいメジャー名を入力して 前四半期の売上高、 の中に 数式バー 。 この式では、 計算する 関数。したがって、等号の後に最初の数文字を入力します CAL 、次に使用する機能をダブルクリックします。 CALCULATE関数には少なくとも2つの引数があります。 1つ目は評価する式で、2つ目は フィルタ 。 開店後 括弧 (( のために 計算する 関数、タイプ 和 別の開き括弧が続きます (( に引数を渡す 和 関数。 入力を開始します 塩 、次に選択します 売上高[SalesAmount] 、その後に閉じ括弧が続きます ) 。これは私たちの最初の式の引数です 計算する 関数。 タイプa コンマ (、) 最初のフィルターを指定するスペースが続き、次のように入力します 前の四半期 。これがフィルターになります。 を使用します 前の四半期 フィルタリングするタイムインテリジェンス機能 和 前四半期までの結果。 開き括弧の後 (( PREVIOUSQUARTER関数には、次のように入力します。 カレンダー[DateKey] 。 ザ・ 前の四半期 関数には1つの引数、つまり連続した日付範囲を含む列があります。私たちの場合、それは DateKey カレンダテーブルの列。 PREVIOUSQUARTERに渡される引数とCALCULATE関数の両方が、閉じ括弧を2つ入力して閉じられていることを確認してください。 )) 。 これで、数式は次のようになります。 数式バーのチェックマークをクリックするか、Enterキーを押して数式を検証します。 それをモデルに追加したら、出来上がり! DAXを使用してメジャーを作成しただけで、簡単なものではありません。 この式が行うことは レポートに適用されたフィルターに応じて、前四半期の総売上高を計算します。 だから、私たちが入れなければならなかったらしましょう 売上高 そして私たちの新しい 前四半期の売上高 チャートで測定し、追加 年 そして QuarterOfYear なので スライサー、 次のようなものがあります Power BI DAXの概念の基本を理解したので、自分でメジャーのDAX式の作成を開始できます。確かに、学ぶのは少し難しいかもしれませんが、DAXは数年前から存在しており、Web上には多くのリソースがあります。このブログと少しの実験を読んだ後、Power BIDAXを介してビジネスソリューションを見つける方法を学ぶことができます。
MINX((
、)
=MINX((フィルタ(InternetSales、InternetSales [SalesTerritoryKey] =5)、InternetSales [Freight] + InternetSales [TaxAmt])
MAX
MAX()
=MAX([ResellerMargin])
MAX
MAX()
=MAX((([郵便番号])
MAXX
MAXX((
、)
__init__ python 3
=MAXX((フィルタ(InternetSales、InternetSales [SalesTerritoryKey] =5)、InternetSales [Freight] + InternetSales [TaxAmt])
和
和()
=和(営業所])
平均
平均()
=平均(InternetSales [ExtendedSalesAmount])
sumx
sumx((
、)
=sumx((フィルタ(InternetSales、InternetSales [SalesTerritoryID] =5)、[貨物])
AVERAGEX
AVERAGEX((
、)
=AVERAGEX(InternetSales、InternetSales [Freight] + InternetSales [TaxAmt])
2.カウント関数
DISTINCTCOUNT
DISTINCTCOUNT()
=DISTINCTCOUNT(ResellerSales_USD [SalesOrderNumber])
カウント
カウント()
=カウント([出荷日])
COUNTA
COUNTA()
=COUNTA(「再販業者」[電話])
COUNTROWS
COUNTROWS((
)
=COUNTROWS(「注文」)
COUNTBLANK
COUNTBLANK()
=COUNTBLANK(リセラー[BankName])
3.日時関数
日付
日付((<年>、<月>、<日>)
=日付((2019年、12、17)
時間
時間()
=時間( 'Orders' [TransactionTime])
今日
今日(()
今すぐ
今すぐ(()
EOMONTH
EOMONTH(、)
=EOMONTH((「2008年3月3日」、1.5)
4.数学関数
セクション
セクション()
=ABS([DealerPrice]-[ListPrice])
EXP
EXP()
= EXP([パワー])
事実
事実()
= FACT([値])
LN
LN()
= LN([値])
ログ
ログ(、)
以下のすべてが同じ結果2を返します。
= LOG(100、10)
= LOG(100)
= LOG10(100)
PI
PI()
パワー
パワー(、<パワー>)
= POWER(5、2)
商
商(、)
= QUOTIENT(5、2)
符号
符号()
= SIGN(([販売価格]-[原価]))
SQRT
SQRT()
= SQRT(25)
5.論理関数
そして
そして(、)
= IF(AND(10>>9、-10 <-1)、「すべて真実」、「1つ以上の誤り」
AND関数に引数として渡される両方の条件がtrueであるため、数式は「AllTrue」を返します。
または
または(、)
= IF(OR(10>>9、-10>-1)、「本当」、「偽」
OR関数に引数として渡される条件の1つが真であるため、数式は「True」を返します。
ない
ない()
= NOT([CalculatedColumn1])
計算列1の各行について、NOT関数は指定された値の論理的な反対を返します。
IF
IF(logical_test> 、、 value_if_false)
= IF([通話]<200、「低い」、IF([通話]<300、'中'、'高い'))
IFERROR
IFERROR((値、value_if_error)
= IFERROR(25/0、9999)
6.情報機能
ISBLANK
ISBLANK((<値>)
= IF(ISBLANK( 'CalculatedMeasures' [PreviousYearTotalSales])、BLANK()、( 'CalculatedMeasures' [Total Sales]-'CalculatedMeasures' [PreviousYearTotalSales])/ 'CalculatedMeasures' [PreviousYearTotalSales])
ISNUMBER
ISNUMBER((<値>)
= IF(ISNUMBER(0)、「番号です」、「数ではない」)
ISTEXT
ISTEXT((<値>)
= IF(ISTEXT('テキスト')、「テキストです」、「非テキストです」)
ISNONTEXT
ISNONTEXT((<値>)
= IF(ISNONTEXT('テキスト')、「非テキストです」、「テキストです」)
ISERROR
ISERROE((<値>)
= IF(ISERROR(SUM( 'ResellerSales_USD' [SalesAmount_USD])/ SUM( 'InternetSales_USD' [SalesAmount_USD]))、BLANK()、SUM( 'ResellerSales_USD' [SalesAmount_USD])/ SUM( 'InternetSales_USD' [SalesAmount_USD]))
7.テキスト関数
連結
連結(、)
= CONCATENATE( 'Hello'、 'World')
CONCATENATEX
CONCATENATEX((
、、 [区切り文字])
= CONCATENATEX(Employees、[FirstName]&““&[LastName]、“、”)
修繕
修繕(、、)
= FIXED([PctCost]、3、1)
交換
交換(、、、、)
= REPLACE( '新製品' [製品コード]、1、2、「OB」)
探す
探す(、[、[] [、]])
= SEARCH('n'、「プリンター」)
'n'は単語 'printer'の4番目の文字であるため、数式は4を返します。
アッパー
アッパー()
= UPPER(['新製品' [製品コード])
Power BI DAXの基本:最初のメジャーの作成
前四半期の売上= CALCULATE(SUM(Sales [SalesAmount])、PREVIOUSQUARTER(Calendar [DateKey]))