DAX workout - USERCULTURE function

試す手段も知っておきたいよね。そう思うのだ。

https://learn.microsoft.com/en-us/dax/userculture-function-dax

>Returns the locale (language code-country code) for the current user, determined by the operating system, browser settings, or Power BI service.
現在のユーザーのロケール (言語コード - 国コード) を返します。ロケールは、オペレーティング システム、ブラウザーの設定、または Power BI サービスによって決定されます。

https://powerbi.microsoft.com/en-us/blog/userculture-dax-function-now-supported-in-power-bi-premium/

挙げられている例ではスルーされているけれども、
```text:DAX
FORMAT(
    TODAY(),
    IF( USERCULTURE() IN {"ja-JP", "zh-tw", "zh-CN", "ko-KR"}, "aaaa", "dddd" ),
    USERCULTURE()
)
```
ということ。東アジア以外の言語を存じ上げないけれども、FORMAT 関数 (DAX) で動作を確かめると違いがわかりやすい。

https://learn.microsoft.com/en-us/dax/format-function-dax

>The format strings supported as an argument to the DAX FORMAT function are based on the **format strings used by Visual Basic (OLE Automation), not on the format strings used by the .NET Framework.** Therefore, you might get unexpected results or an error if the argument doesn't match any defined format strings. For example, "p" as an abbreviation for "Percent" isn't supported. Strings that you provide as an argument to the FORMAT function that aren't included in the list of predefined format strings are handled as part of a custom format string, or as a string literal.

Excel の書式設定でも `"aaa"`, `"aaaa"` で日本語の曜日表記ができていて、これと同じ。

データモデルのカルチャーが "ja-JP" であるとき、日本語をサポートする書式文字列を特段の手段なく使える。
```text:DAX
// culture = ja-JP
FORMAT( dt"2022-09-26", "aaaa") = "月曜日"
FORMAT( dt"2022-09-27", "aaa") = "火"
FORMAT( dt"2022-09-26", "dddd") = "Monday"
FORMAT( dt"2022-09-27", "ddd") = "Tue"
```
データモデルのカルチャーが "ja-JP" ではないとき、明示的に書式文字列を指定する。
```text:DAX
// culture = en-US
FORMAT( dt"2022-09-26", "aaaa") = "aaaa"
FORMAT( dt"2022-09-27", "aaa") = "aaa"
FORMAT( dt"2022-09-26", "dddd") = "Monday"
FORMAT( dt"2022-09-27", "ddd") = "Tue"

FORMAT( dt"2022-09-26", "aaaa", "ja-JP") = "月曜日"
FORMAT( dt"2022-09-27", "aaa", "ja-JP") = "火"
```
で、以前にこんなポストをしている。

https://qiita.com/PowerBIxyz/items/8dcf5736f585a1441095

# メジャーで使う
試せば一目瞭然。関数の動作と目的からすれば当たり前ではある。
> CUSTOMDATA, USERNAME, USERCULTURE and USERPRINCIPALNAME functions are not supported in calculated tables/columns. These functions may only be used in Measures or in the AllowedRowsExpression.

# 動作を確認する
Power BI サービス上に配置されたレポートを Web ブラウザで確認
なお、Power BI Service の Settings > Language > Language Settings はブラウザの言語設定をオーバーライド可能

別の方法も考えられる。基本的には接続情報に LocaleIdentifier を追加。

## SQL Server Management Studio
LocaleIdentifier=1041 を追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/9f8a5151-0c9f-9a82-5c75-815880ad3963.png)

## DAX Studio
素晴らしいね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/6ede73fd-a19e-aec5-c7fe-26d74431d61e.png)

## Excel
Extended Properties="LocaleIdentifier=1041" を接続文字列に追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/32838481-9d90-a18f-230a-89d2d48849dd.png)

# 思ったこと🙄
いつどのように使うのかはボチボチと考える。

# その他
https://powerbi.connpass.com/

- [Power BI 勉強会 - connpass](https://powerbi.connpass.com/)
- [Power BI Desktop を使い始めるには](http://qiita.com/PowerBIxyz/items/6c4735cb5b5712e70981)
- [Excel で Power Query を使い始めるには](http://qiita.com/PowerBIxyz/items/52e563037b855a099ca9)