【PowerApps】SharePointリストのタイムゾーンとの関係について【PowerBI】

【PowerApps】SharePointリストのタイムゾーンとの関係について【PowerBI】 | Tableau-id Press -タブロイド-
PowerApps_200

こんにちは、前回に引き続きPowerAppsに関する記事となります。

このブログでは、PowerAppsを通して登録した日時データの取り扱いについて紹介します。

また、業務ではPowerAppsのデータをSharePointリストにため込んだり、PowerBIを用いてそのデータを可視化するという場面も多いため、
各サービスごとのタイムゾーンの取り扱いの違いについても紹介したいと思います。

注意事項

本記事は2023年10月時点での調査内容になります。最新の情報については公式のリリース計画をご確認ください。

SharePointリストのタイムゾーンについて

早速PowerAppsのタイムゾーンについて説明したいのですが、SharePointリスト上でデータを確認したほうがわかりやすいためこちらから説明します。

SharePointサイトの地域の設定によってタイムゾーンは設定される

SharePointではサイトごとに地域の設定が可能です。そこで指定した地域のタイムゾーンに合わせて表示が変わります。

左上の歯車マークから【サイト情報】→【すべてのサイト情報の設定を表示】をクリック

【サイトの管理】→【地域の設定】をクリック

ここでタイムゾーンの設定が可能です。

こちらの設定を使いタイムゾーンをUTCと日本に設定した二つのサイト上のSharePointリストでの表示の違いを確認してみましょう。

以下の画像は、PowerAppsのNow関数とToday関数を使って、それぞれのリスト上に格納した結果です。

日本時間サイトとUTCサイトでは、9時間の差が開いているのがわかります。
また、Today関数では日本時間が基準となり24日の0時として日付と時間が格納されましたが、UTCに変化するとそちらも9時間差が開いていることが理解できます。

具体的にはPowerApps(後述しますが、このアプリのタイムゾーンは日本です)で現在時刻を取得しています。
それぞれのサイト上のリストに現在時刻を格納しているのですが日本時間が基準となって、それに対応するUTCが格納されていることがわかります。

PowerApps上の処理としては、上記のようにOnSelectプロパティに、Patch関数でそれぞれのサイトにNowとTodayの値を格納した形になります。

SharePointリスト上は、同じ時間を格納した場合でもそれぞれのタイムゾーンに合わせた値が格納されることがわかります。
リストを扱う際にはサイトの設定でどのタイムゾーンに設定がされているかの確認が必要です。

PowerAppsのタイムゾーンについて

PowerApps上のタイムゾーンの扱いに関しては、ユーザーのローカルタイムゾーンが適用されます。
例えばユーザーが日本でアプリを実行し、現在時刻を取得した場合は日本のタイムゾーン上の時刻が取得されます。

また、SharePointリスト上にUTCの時刻が格納されている場合も日本のタイムゾーンが適用されて表示される仕組みになっているようです。

上記の例で確認してみましょう。UTCサイトのリストと日本時間のサイトでは異なる値が表示されていますが、実際にそれぞれのリストからデータを取得してPowerApps上で表示させると以下のような表示になります。

サイト上は異なるタイムゾーンで値が表示されていますが、PowerApps上の表示はユーザーのローカルゾーンに合わせた形で時間が表示されています。

日本時間サイト→PowerAppsが日本のタイムゾーンで動いているので、そのままの表示。
UTCサイト→PowerAppsが日本のタイムゾーンで動いているので、+9時間された時間で表示。

データを作成するアプリと表示するアプリが同じタイムゾーンであれば特に挙動は気にする必要はなさそうだということがわかりました。

このあたり、しっかりドキュメントに記載がないのですが、挙動を見る限りそうなんだろうなという形です。
このブログでも同様の記載がありました。

なお、Dataverseを使用したアプリの場合は、Dataverse上でタイムゾーンの設定など細かく設定も可能なようです。
詳細はドキュメントを確認ください。

PowerBIのタイムゾーンについて

最後に、PowerBIを使って上記リストの値がどのように表示されるか確認してみましょう。

なんと、PowerBI上はどちらもUTC時間での表示となりました。
PowerBIのデータセットとしてSharePointリストから取得した日時データは、SharePointサイトやユーザーのローカルタイムに関わらずUTC時刻として認識される点に注意が必要です。

最後に、PowerBI上の関数を使った際に適用されるタイムゾーンについては、PowerBIDesktopとPowerBIサービスのワークスペース上で異なる点に注意が必要です。

PowerBI Desktopの場合は、ユーザーのローカルタイムが適用、PowerBIサービスではUTCが適用されます。
つまり、Desktop上でNow関数を使って取得した時刻は、PowerBIサービス上にパブリッシュした際には、UTCとして計算されなおされます。

その場合は、正しい結果(日本時間で表示させたい 等)を明示的に記載する必要があります。
例えば、UTCNow() + TIME(9,0,0) などのように、UTC時刻を取得した後9時間プラスするような記載にしておけばDesktopとワークスペース上での表示の違いは発生しません。

まとめ

普段はあまり意識しないタイムゾーンについてですが、問題が起こると意外と修正が面倒なことも多い設定なので一度しっかり理解することをお勧めします。
特にPowerBIのDesktopとワークスペースのタイムゾーンの違いについては注意が必要だなと感じました。

truestarではこのようにMicrosoftサービスを使った業務支援も行っております。
お困りごとがありましたらお気軽にお問い合わせください。