時系列データをPower BIで手っ取り早く可視化する場合、実データの時刻をUTCで管理していても、UIではJSTで表示できた方が分かりやすい場合があります。
特にWebのPower BIに発行した場合にもJSTで表示したい場合には本記事の方法が使えます。
手順
例えばセンサーデータをAzureのTable Storageに、計測時刻はUTCで記録しているものとします。
Power BI Desktopで「クエリを編集」をクリックし、Power Queryエディターを立ち上げ、UI上で対象となる時刻カラムを「日付/時刻/タイムゾーン」に変換しておきます。
「詳細エディター」をクリックし、詳細エディターを立ち上げ、クエリーを次のように編集します。DateTimeZone.SwitchZone
を使います。
編集前
let
ソース = AzureStorage.Tables("storagename"),
temperature = ソース{[Name="temperature"]}[Data],
#"展開された Content" = Table.ExpandRecordColumn(temperature, "Content", {"measured_at", "sensor", "temperature"}, {"Content.measured_at", "Content.sensor", "Content.temperature"}),
変更された型 = Table.TransformColumnTypes(#"展開された Content",{{"Content.measured_at", type datetimezone}, {"Timestamp", type datetimezone}, {"Content.temperature", type number}})
in
変更された型
編集後
let
change_tz = (x as datetimezone) as datetimezone => DateTimeZone.SwitchZone(x, 9),
ソース = AzureStorage.Tables("storagename"),
temperature = ソース{[Name="temperature"]}[Data],
#"展開された Content" = Table.ExpandRecordColumn(temperature, "Content", {"measured_at", "sensor", "temperature"}, {"Content.measured_at", "Content.sensor", "Content.temperature"}),
変更された型 = Table.TransformColumnTypes(#"展開された Content",{{"Content.measured_at", type datetimezone}, {"Timestamp", type datetimezone}, {"Content.temperature", type number}}),
tzchanged = Table.TransformColumns(変更された型, {{"Content.measured_at", change_tz}, {"Timestamp", change_tz}})
in
tzchanged
「完了」をクリックし詳細エディターを閉じ、「閉じて適用」クリックしPower Queryエディターを閉じ、レポートビューで変更結果を確認します。