[Power BI] 学習記録

PowerBIを仕事で使用することになったため、メモを残しておきます。
あとQiitaのAPIを試すのに記事の投稿が必要で、致し方なく投稿した..みたいなとこもあります...
偉大な各参考サイトから見た内容を切り貼りしているので雑多です。
随時加筆予定。

**レイアウト参考サイト**
https://qiita.com/yugoes1021/items/e1ab631d0b6942508844
https://www.facebook.com/groups/powerBiForever


**入門**
+ 基本機能説明
https://www.youtube.com/watch?v=e3alvLCbBtY
+ 大まかなレポート作成までの流れ
https://qiita.com/Masutani/items/86c32d0bc1bc7b782d3c
概要省いてスライド15から開始でもよし
+ DAX関数の基礎
https://learn.microsoft.com/ja-jp/training/modules/dax-power-bi-write-formulas/

**データソース**
+ 追加
Sharepoint リストから接続可能
URLは"List"の手前まで!
データソースのファイルパスはパラメータ化することが可能
https://qiita.com/yugoes1021/items/a627b862811df7b1bad5

+ 作成
Power BI上でテーブルを作成することも可能。
既存のマスタテーブルを明細の複数項目のマスタとして使用することはできないので、Power Queryで元のマスタをコピーして新しいクエリを作って、マスタを分けるのが吉
この時フィルターをかけた状態でコピーすると、条件にあったレコードだけが入るマスタにできる

+ API
接続情報はカスタムコネクタってのを所定のフォルダに配置する方法と、
https://qiita.com/yugoes1021/items/1a59b5ba159e33f1d1fa
自分で全部細かく設定する方法がある
https://qiita.com/kenakamu/items/1274a71fcb5648d186a0
資格認証のエラー
https://jpbap-sqlbi.github.io/blog/powerbi/pbi_datasource_authentication/
+ リレーション
https://note.com/tentomusea/n/n7cd29bfa60ff

***機能***

+ 機能一覧
閾値に達したときに通知を受け取るなどできる
https://learn.microsoft.com/ja-jp/training/modules/explore-power-bi-service/1-why-power-bi

+ アラート
アラートを作成する
[Marketing and sales] (売上およびマーケティング) アプリ ダッシュボードで、[Total Category Volume] (合計カテゴリ ボリューム) タイルの上にマウス カーソルを置き、"..." (省略記号) を選択します。
[アラートの管理] を選択します。
[+ アラート ルールの追加] を選択します。
下にスクロールして [しきい値] フィールドを見つけ、「49000」と入力します。
[最大で 24 時間に 1 回] チェックボックスをオンにします。
[メールも受け取る] のチェックボックスをオンにします。
[保存して閉じる] を選択します。


+ フィルター

[フィルター] ウィンドウを探索する
データをフィルターするもう 1 つの方法としては、[フィルター] ウィンドウでフィルターを開いて変更します。 [フィルター] ウィンドウには、レポート デザイナーによってレポートに追加されたフィルターが含まれています。 コンシューマーは、フィルターを操作して変更を保存できますが、新しいフィルターを追加することはできません。

フィルターには、次の 4 種類があります。

レポート – レポート内のすべてのページに適用されます。

ページ – 現在のレポート ページ上のすべてのビジュアルに適用されます。

ビジュアル – レポート ページ上の単一のビジュアルに適用されます。 レポート キャンバスでビジュアルを選択した場合は、ビジュアル レベル フィルターのみが表示されます。

ドリルスルー – 1 つのビジュアル内で、より詳細なビューを連続して探索できます。

+ ボタン
Power BI でボタンを使用したレポートを作成すると、ユーザーが Power BI コンテンツをマウスでポイントしたり、クリックや対話操作を行うことができる、アプリのように動作する魅力的な環境を作成できます。 ボタンは、Power BI Desktop と Power BI サービスのレポートに追加できます。 ご自分のレポートを Power BI サービスで共有すると、それらはあなたのユーザーに対してアプリのように動作します。

Power BI Desktop でボタンを作成するには、 [挿入] リボンで [ボタン] を選択すると、ドロップダウン メニューが表示されます。ここでは、次の図のように、オプションのコレクションからボタンを選択できます。

+ Power Query エディター
https://learn.microsoft.com/ja-jp/training/modules/introduction-power-bi/2a-data-modeling-visualizations

+ What-if 分析
シミュレーション機能みたいな感じか？
Power BI Desktop では、what-if パラメーターと呼ばれる機能がサポートされています。 what-if パラメーターを作成すると、計算テーブルがモデルに自動的に追加されます。

what-if パラメーターを使用すると、レポート ユーザーは、計算テーブルに格納されている値の選択またはフィルター処理を行うことができます。 メジャーの数式では、選択した値を意味のある方法で使用できます。 たとえば、what-if パラメーターを使用すると、レポート ユーザーは仮定の通貨換算レートを選択でき、メジャーでは選択したレートで (現地通貨の) 収益値を除算できます。

特に what-if 計算テーブルは、フィルターの反映に使用されないため、他のモデル テーブルに関連付けられません。 このため、"切断されたテーブル" と呼ばれることもあります。

**分析・数値項目**
+ メジャー
メジャーは、モデルのデータを集計するように設計されています。データをグループ化するために使用することはできません。 ただし、メジャーを使用してデータをフィルター処理できる 1 つの特殊なケースがあります。視覚エフェクトにメジャーが表示され、フィルターが視覚化レベルのフィルターである (したがってレポートまたはページレベルのフィルターではない) ときに、メジャーを使用して視覚化がフィルター処理されます。 この方法で使用される場合、メジャー フィルターは、分析クエリでデータが集計された "後で" 適用されます。 このプロセスは、メジャーのフィルター条件に該当しないグループを削除するために行われます (SQL 構文に慣れている方にとっては、ビジュアルをフィルター処理するために使用するメジャーは、SELECT ステートメントの HAVING 句に似ています)。

+ 階層
親階層で階層を作成し、その下の分析項目から"階層に追加"を実行


**Power BI独特の演算子**
+ 比較演算子**
演算子	説明
=	等しい
==	厳密に等しい

厳密に等しい (==) を除くすべての比較演算子は、BLANK を、数値のゼロ、空の文字列 ("")、1899 年 12 月 30 日の日付、または FALSE に等しいものとして扱います。 これは、式 [Revenue] の値がゼロまたは空白の場合に式 [Revenue] = 0 が TRUE になることを意味します。 これに対して、[Revenue] == 0 が TRUE になるのは、[Revenue] の値がゼロの場合に限られます。

+ 論理演算子
単一の結果を生成する式を組み合わせるには、論理演算子を使用します。 次の表に、すべての論理演算子を示します。

演算子	説明
&&	それぞれ結果がブール値になる 2 つの式の間に AND 条件を作成します。 両方の式から TRUE が返される場合、式を組み合わせたものからも TRUE が返されます。それ以外の場合は、組み合わせたものから FALSE が返されます。
|| (二重パイプ)	2 つの論理式の間に OR 条件を作成します。 いずれかの式で TRUE が返される場合、結果は TRUE になります。両方の式が FALSE のときにのみ、結果は FALSE になります。
IN	テーブルと比較される各行の間に論理 OR 条件を作成します。 注: テーブル コンストラクター構文では中かっこを使用します。
NOT	ブール式の状態を反転します (FALSE から TRUE、またはその逆)。

例)
ANZ Revenueにオーストラリアとニュージーランドのフィルタをかけて集計している
ANZ Revenue =
CALCULATE(
    [Revenue],
    Customer[Country-Region] IN {
        "Australia",
        "New Zealand"
    }
)

**DAX 変数**

変数【RevenuePriorYear】を関数内で宣言している。利益の前年比は、当年利益から前年利益に当たる【RevenuePriorYear】を引いて、
それを【RevenuePriorYear】で割って出すので、変数を作っておくと前年利益を2回計算しなくて済む(計算時間が減る)

DAX変数使用前
Revenue YoY % = 
DIVIDE(
    [Revenue] 
        - CALCULATE(
            [Revenue], 
            SAMEPERIODLASTYEAR('Date'[Date])
            ), 
            CALCULATE(
                [Revenue], 
                SAMEPERIODLASTYEAR('Date'[Date])
            )
)


DAX変数使用後
Revenue YoY % =
VAR RevenuePriorYear =
    CALCULATE(
        [Revenue],
        SAMEPERIODLASTYEAR('Date'[Date])
    )
RETURN
    DIVIDE(
        [Revenue] - RevenuePriorYear,
        RevenuePriorYear
    )



**DAX関数**


+ 日付書式変換
https://learn.microsoft.com/ja-jp/training/modules/design-model-power-bi/3-date-table

+ CalenderAuto関数・Calender関数
他テーブルの値を開始日・終了日に代入することも可能。
↓こんな感じ
CALENDAR(max(Calendermaster[StartDate]),max(CalenderMaster[EndDate]))
日付テーブル参照
例1
https://qiita.com/y-komuro/items/de3e2cb3dea129260079
例2
https://soft-zou.jp/2021/08/27/power-bi-dateadd/#:~:text=%E6%96%B9%E6%B3%95%E3%81%A8%E3%81%97%E3%81%A6%E3%81%AF%E3%80%81%E3%80%8C%E6%96%B0%E3%81%97%E3%81%84%E5%88%97,%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E4%BD%9C%E6%88%90%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82

+ テーブルの定義
既存の'Date'テーブルを参照してShip Dateテーブルを作成するときの定義
Ship Date = 'Date'
※"'(シングルクオーテーション)"は予約語やテーブル名にスペースが入っている場合のみ必須

+ 列参照
[]で列名を囲む
Revenue = SUM([Sales Amount])
列参照の前には必ずテーブル名を付けることをお勧めしましたが、メジャーについてはその逆になります。メジャー参照の前にテーブル名を付けないことをお勧めします。
列はテーブルごとに管理するが、メジャーはモデル全体に属するオブジェクトだから

+ BLANK データ型
BLANK データ型については、特に説明が必要です。 DAX は、データベースの NULL と Excel の空白セルの両方に対して BLANK を使用します。 BLANK はゼロを意味しません。 "値が存在しない" と考えた方が簡単な場合もあります。
BLANK データ型に関連する DAX 関数が 2 つあります。BLANK DAX 関数は BLANK を返し、ISBLANK DAX 関数は式が BLANK に評価されるかどうかをテストします。

+ DISTINCTCOUNT 関数
延べ人数じゃなくて、実人数を数えられる関数
DISTINCTCOUNT DAX 関数を使用して、列内の個別の値の数をカウントできます。 この関数は、分析ソリューションで特に効果を発揮します。 顧客の数が "個別の" 顧客の数と異なる場合を考えてみます。 後者は繰り返しの顧客をカウントしないため、「"異なる" 顧客の数」と「顧客の数」という違いがあります。

+ DIVIDE 関数
DIVIDE(<numerator>, <denominator>[, <alternate_result>])
分母が0だとエラーになるところ、3個目の引数に失敗した場合の値を設定できるので、関数がすっきりする。
DIVIDE DAX 関数を使用して、除算を行うことができます。 

+ ThisitemとSelectedの違い
「ただし、ギャラリーのレコード情報内でselectedとThisItemを使うと下記のような状態になります。 」以降の図が全てを表している。
 https://hobby-compass.com/%E3%82%AE%E3%83%A3%E3%83%A9%E3%83%AA%E3%83%BC%E3%81%AEthisitem%E3%81%A3%E3%81%A6%E4%BD%95%EF%BC%9Fselected%E3%81%A8%E3%81%AE%E9%81%95%E3%81%84%E3%82%82%E4%BA%A4%E3%81%88%E3%81%A6%E8%A7%A3%E8%AA%AC/


とりあえず関数に慣れていかないと...