DAX関数の日付の計算について
はじめに
仕事で、PowerBIを使用している。
テーブルで日付を取得できたりできる関数が、DAX関数だ。
Data Analysis Expressionsの略称。
オンプレ環境で日付取得をしていると、クラウド環境にアップしたときに、時刻がずれてしまうため、ずれないようにするための対応を行なっている。
修正方法が分からない箇所があったので、公式リファレンスを紐解いていきたい。
UTCTODAY()
現在のUTCの日付を返す。
UTCとは、Universal time coordinated(協定世界時)の略称。
世界で基準とされており、精度の高い原子時計と天体観測に基づいて決められた時間。
以下のサイトでは、UTCの時刻がリアルタイムで更新されている。
東京は、+9時間。
UTCNOW()
現在のUTCの日付と時刻を返す。
クラウドにアップするとTODAY()やNOW()で標準時が取得されてしまう
TODAY()は、現在の日付を返す。
NOW()は、現在の日付と時刻を返す。
「Power BIサービスでは、NOW関数の結果は常にUTCタイムゾーンです。」という記載があった。
仕事では、オンプレ環境からクラウド環境に移行している。
オンプレ環境では、NOW()とすると、日本の日時が取得される。
一方、クラウド環境 = Power BIサービスでは、UTC(標準日時)が取得されてしまう。
オンプレ環境でレポートを作成したときに、日本の日時を取得することを意図してNOW()を使用すると、クラウド環境で9時間マイナスになってしまう。
計算
NOW()に3.5を足すと、現在の日付/時刻に3.5日を加えた値が返る。
時間、分、秒は1日の少数として表される。
1は1日という意味なので、先ほどの3.5は、3.5日という意味になる。
おそらく、-120であれば、120日前という意味になる。
9時間は、1日(24時間)を基準に、9/24と表現できる。
DATEVALUE()とTIMEVALUE()
DATEVALUE()は、テキスト形式の日付をdatetime形式の日付に変換する。
DATEVALUE 関数 (DAX) – DAX | Microsoft Learn
TIMEVALUE()は、テキスト形式の時刻をdatetime形式の時刻に変換する。
コメントを残す