Translate

2021年3月14日日曜日

【Power BI備忘録】日付テーブル作成のDAX関数

 Power BIで時系列データを扱う場合は、日付テーブルをDAX関数で作成すると便利になるようです。


一意で、連続している日付列を持ったテーブルがあると、タイムインテリジェンス関数の利用などが可能になるようです。


ネット上でいろいろな日付テーブル作成のDAX関数が紹介されているので参考にしていきたいと思います。


下記は、ネット上にあるDAX関数です。変数やCALENDARAUTO()を使うもの、使わないものなどがあります。


MAX([データが持っている日付列])とMIN([データが持っている日付列])のデータを使って日付テーブルを作成するのがいいかもしれません。この場合は下記のような形になるようです。

CalendarTable  =  CALENDAR(MIN([データが持っている日付列]),MAX([データが持っている日付列]))

この場合、範囲の終わりの方を「EOMONTH(MAX([データが持っている日付列]), 0))」とすれば、該当月の月末までの日付が生成されます。

作成した日付テーブルは、ファクトテーブルとの間にリレーションシップを作成して利用します。この場合、日付テーブルを「日付テーブルとしてマークする」という設定にするといいようです。

「日付テーブルとしてマークする」の設定をしていないとタイムインテリジェンス関数がうまく機能しないことがあるようです。ただし、日付型の日付列でリレーションしていれば「日付テーブルとしてマークする」は必須でもないようです。

--------------------------------------------------

CalendarTable = 

var BaseCalendar = CALENDARAUTO()

RETURN

    GENERATE(

        BaseCalendar,

        var BaseDate = [Date]

        var YearNumber = YEAR(BaseDate)

        var MonthNumber = MONTH(BaseDate)

        var DateNumber = DAY(BaseDate)

        var DayNumber = WEEKDAY(BaseDate, 1)


        RETURN 

        ROW(

            "年_番号", YearNumber,

            "年", FORMAT(BaseDate, "yyyy年"),

            "月_番号", MonthNumber,

            "月", FORMAT(BaseDate, "mm月"),

            "年月_番号", FORMAT(BaseDate, "yyyymm"),

            "年月", FORMAT(BaseDate, "yyyy年mm月"),

            "日_番号", DateNumber,

            "日", FORMAT(BaseDate, "dd日"),

            "曜日_番号", DayNumber,

            "曜日", SWITCH(DayNumber, 1, "日", 2, "月", 3, "火", 4, "水", 5, "木", 6, "金", 7, "土",""),

            "相対月数", DATEDIFF(TODAY(), BaseDate, MONTH)

        )

    )

---------------------------------------------------

Calendar = 

ADDCOLUMNS (

CALENDAR (DATE(2000,1,1), DATE(2025,12,31)),

"DateAsInteger", FORMAT ( [Date], "YYYYMMDD" ),

"Year", YEAR ( [Date] ),

"Monthnumber", FORMAT ( [Date], "MM" ),

"YearMonthnumber", FORMAT ( [Date], "YYYY/MM" ),

"YearMonthShort", FORMAT ( [Date], "YYYY/mmm" ),

"MonthNameShort", FORMAT ( [Date], "mmm" ),

"MonthNameLong", FORMAT ( [Date], "mmmm" ),

"DayOfWeekNumber", WEEKDAY ( [Date] ),

"DayOfWeek", FORMAT ( [Date], "dddd" ),

"DayOfWeekShort", FORMAT ( [Date], "ddd" ),

"Quarter", "Q" & FORMAT ( [Date], "Q" ),

"YearQuarter", FORMAT ( [Date], "YYYY" ) & "/Q" & FORMAT ( [Date], "Q" )

)

---------------------------------------------------

---------------------------------------------------

日付テーブル = 

VAR StartDate="2016/04/01"

VAR EndDate="2020/3/31"

VAR Today=UTCTODAY()+9/24

VAR ThisFY=if(MONTH(Today)>3,YEAR(Today),YEAR(Today)-1)

VAR BaseCalendar =CALENDAR (StartDate,EndDate)

RETURN


ADDCOLUMNS(

    BaseCalendar,

    "年_数値", YEAR ( [Date] ),

    "年_yyyy年",FORMAT([Date],"yyyy年"),

    "月_数値", MONTH ([Date]),

    "月_MM月", FORMAT ([Date], "MM月" ),

    "日_数値", DAY ([Date]),

    "日_DD日", FORMAT([Date],"DD日"),

    "年月_数値", VALUE(FORMAT([Date], "yyyyMM" )),

    "年月_yy年MM月", FORMAT ( [Date], "yy年MM月" ),

    "年度_数値",if(MONTH([Date])>3,YEAR([Date]),YEAR([Date])-1),

    "年度_0年度",FORMAT(if(MONTH([Date])>3,YEAR([Date]),YEAR([Date])-1),"0年度"),

    "年度四半期_数値", if(MONTH([Date])<4,4,if(MONTH([Date])<7,1,if(MONTH([Date])<10,2,3))),

    "年度四半期_0Q", if(MONTH([Date])<4,"4Q",if(MONTH([Date])<7,"1Q",if(MONTH([Date])<10,"2Q","3Q"))),

    "週_数値", WEEKNUM ( [Date], 1 ),

    "週_第00週", FORMAT ( WEEKNUM ( [Date], 1 ), "第00週" ),

    "曜日番号月曜から_数値", WEEKDAY ( [Date], 2 ),

    "曜日_aaa", FORMAT([Date],"aaa"),

    "日と曜日", FORMAT ( [Date], "DDaaa" ),

    "相対日付",DATEDIFF(Today,[Date],DAY),

    "相対月",DATEDIFF(Today,[Date],MONTH),

    "相対年度",if(MONTH([Date])>3,YEAR([Date])-ThisFY,YEAR([Date])-1-ThisFY)

    )

---------------------------------------------------

https://docs.microsoft.com/ja-jp/learn/modules/dax-power-bi-add-calculated-tables/1-introduction


【Power BI備忘録】R言語のビジュアルの利用は、Rでの実行確認が前提

Power BIでR言語を使ったビジュアルを作成することができるというので試してみました。Power BIからRを呼び出して実行するのでR環境が必須です。

タイタニックのデータで決定木分析を行う、というブログをなぞって試しています。

Power BIのRビジュアルにRのコードを入力するのですが、その前にRでコードを実行してみて動作する状態になっていないといけません。

私の環境ではRStudioを利用しているので、まずRStudioで必要なパッケージのインストールとライブラリ化を済ませて、Power BIに入力するコードをRStudio上で実行してみて動作確認をすることが必要です。

つまり、当然のことですが、RStudio上でうまく動作しない場合はPower BI上でも動作しません。


最初は、Power BIの「Rスクリプトエディター」というウィンドウでコードを作成するのかと思っていましたが、まずRStudioなどで作成し、動作確認済のコードを貼りつけるのが正しいやり方のようです。このことに気づくのにちょっと時間がかかりました。「Rスクリプトエディター」という名称は紛らわしいと思います。

マイクロソフトの公式ページの説明はわかりにくいです。もしかすると、マイクロソフトの公式ページにもわかりやすい説明があるのかもしれませんが、探すのが難しいです。









2020年10月7日水曜日

【Google アナリティクス】「すべてのページ」と「ランディングページ」の違いがあまり知られていないようです:データのカウント方法の違いを理解しておく必要があります

Google アナリティクスの「すべてのページ」別にコンバージョン率を見ることができなかったので、「すべてのページ」と「ランディング ページ」の違いを調べてみました。

この違いについて解説しているサイトがあまり多くなかったので、備忘録としてまとめてみました。

Google アナリティクスの標準の分析メニューで、「ランディング ページ」別に「コンバージョン率」や「目標の完了数」を見ることができますが、「すべてのページ」別に「コンバージョン率」や「目標の完了数」を見ることはできません。

また、 Google アナリティクスの標準の分析メニューで、「すべてのページ」別に「ページビュー数」を見ることができますが、「ランディング ページ」別に「ページビュー数」を見ることはできません。

同じ「ページ」という単語が使われているものの、「すべてのページ」と「ランディング ページ」ではデータの種類(レベル)が異なっています。

「すべてのページ」はヒットレベル、「ランディング ページ」はセッションレベルでデータをカウントしています。

「コンバージョン率」や「目標の完了数」は、セッションレベルのデータなので、「ランディング ページ」と組み合わせて見ることができます。

一方、ヒットレベルのデータである「すべてのページ」の「ページ」と「コンバージョン率」「目標の完了数」を組み合わせてデータを見ることはできません。

なお、カスタムレポートを作成すれば、「ランディング ページ」別の「ページビュー数」を見ることもできますが、その「ページビュー数」の数字は、「すべてのページ」での「ページビュー数」とは異なる場合があります。

セッションレベルの「ランディング ページ」別の「ページビュー数」は、ランディングページを見たセッションでの「ページビュー数」が含まれるので、多くの場合、「ランディング ページ」別の「ページビュー数」の方が多くなっているはずです。

例えば、「Page a → Page b → Page c」というアクセスがあった場合に、Page aの「ページビュー数」は1ですが、「ランディング ページ」別に見た「Page a」の「ページビュー数」は3になります。つまり、「ランディング ページ」別の場合は、「Page a」にアクセスしたセッションでのページビュー数がカウントされていることになります。

なお、上記の例の場合、トータルのページビュー数は、「ランディングページ」から見た場合も、「すべてのページ」から見た場合も「3」ということになります。

「ランディング ページ」というデータ格納場所と、「ページ」というデータ格納場所には異なるデータが保管されている、といったことになるのだと思います。

以上のような例は、GAの標準の分析メニューにないデイメンションと指標の組み合わせでデータを見ようとする場合には注意が必要だということを示しています。





2020年9月26日土曜日

◆【マイナンバーカード】住民票のコンビニ交付自治体は、全市区町村の半分以下です:2020年9月現在

 マイナンバーカードを利用して、コンビニで住民票の交付サービスを受けられる自治体のデータポータルの地図でのプロットです。2020年9月26日現在のデータを基にしています。


----------------------------------------------------------------------------------------

---------------------------------------------------
-







2020年9月3日木曜日

◆【データランキング】ぎょうざ:支出金額の都市別ランキング:総務省「家計調査」から

----------------------------------------------------------------------------------------

---------------------------------------------------
-

-------------------------------------------------------------------------------

データポータルのダッシュボードです。 総務省「家計調査」(品目分類)から、「ぎょうざ」のデータを抜き出しました。


2020年9月1日火曜日

◆総務省「家計調査」から:外食、交通、宿泊など、新形コロナの影響で支出が大きく減少した項目の抜粋

----------------------------------------------------------------------------------------

---------------------------------------------------
-

-------------------------------------------------------------------------------

データポータルのダッシュボードです。 総務省「家計調査」(品目分類)から、外食、交通、宿泊など、新形コロナの影響で支出が大きく減少した項目を抜粋しています。
都市別のデータが見られるページも作成しています。

2020年8月16日日曜日

◆世界の月平均気温偏差(℃):月別の時系列データの分析:グーグルのデータポータルのダッシュボードによる、並べ替えができる表です

下の表は、右下のボタンで、全画面表示にすることができます。

 

「インタラクティブな表」を簡単に利用できるようにするには、上のようなグーグルの「データポータル」のダッシュボード機能を使う方法があります。

「R言語」の「DT::datatable」のコードで作成したhtmlファイルをブログに貼り付けるよりも簡単で、きれいな表になります。ただし、グーグルの「データポータル」のダッシュボードは、IEやEdgeでは、うまく表示されないことがあるようです。

---------------------------------------------------------------------------------------
◆日本の月平均気温偏差(℃):月別の時系列データの分析:グーグルのデータポータルのダッシュボードによる、並べ替えができる表です -----------------------------------------------------------------------------------

 
------------------------------------------------------------------------------
-------------------------------------------------------------------

--------------------------------------------------------------------