LoginSignup
0
1

More than 1 year has passed since last update.

PBI DesktopとPBI Serviceでの日時の取扱いの違いと対応方法

Posted at

1. 課題:PBI DesktopとPBI Serviceでの日時の取扱いの違い

PBIレポートに更新日時を表示したいことはよくあります。
PowerQury M言語のDateTime.LocalNow()で日時を取得して表示することができます。
しかし、DateTime.LocalNow()ではtime zoneに依存してしまうため、PBI DesktopとPBI Serviceで以下の違いが発生してしまいます。

  • PBI Desktop:ローカルPCのtime zoneに依存して、日時を取得する。
  • PBI Service:UTCで日時を取得する。

そのため、ローカルPCのtime zoneがUTCではない場合、PBI Desktopから発行したPBI Serviceでは日時にtime zoneのズレが生じてしまう。

PBI Desktopで表示したDateTime.LocalNow()
ローカルPCのtime zone(JST)で表示される。
image.png

PBI Serviceで表示したDateTime.LocalNow()
UTCで表示される。JSTとは9.00h差異が出る。
image.png

2. 対応方法①:PBI Desktop・ServiceともにUTC+9.00hでJSTを導出する

『DateTime.LocalNow()』ではなく、『DateTimeZone.SwitchZone(DateTimeZone.UtcNow(),9)』で日時を取得します。
UTCで日時を取得後に9.00hの差分を補正しています。

タイムゾーン型の項目を使えばうまくいくが、datetime型の項目に変換してしまうと、「4.注意点」の問題が発生するので注意!

3. 対応方法②:日付を文字列型に変換する

『DateTime.LocalNow()』もしくは『DateTimeZone.SwitchZone(DateTimeZone.UtcNow(),9)』など、日時を取得した後に型をテキスト型に変換します。
これにより、テキストで保持されるため、PBI DesktopとServiceでのtime zoneの影響を排除できます。

4. 注意点:datetime型に変換するとPBI ServiceはUTCになる

項目の型をdatetime型にした場合、PBI DesktopではローカルPCのtime zoneに自動変換され、PBI ServiceではUTCに自動変換されてしまうため、結局、PBI DesktopとServiceでtime zoneの差異が生じてしまいます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1