Power Query エディタの "カスタム列の追加" は使い方だけじゃなくて、よく使う関数も一緒に勉強するといいよという話

なんでだろうなぁと思っていたんだよね。なんで、そんな面倒な式を記述するのだろうって。もしかして、教わっていない/説明を受けていないのかもしれない。教わったけどよく理解していないという可能性もある。とはいえ、エディタの機能の使い方だけではなく、よく使うだろう Power Query の関数も一緒に勉強したほうがよいのでは？という話。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/c692fa7c-e700-4c9d-55ab-00d186f5b9b7.png)
テーブルに追加する列の値を得るための "式" を記述しなければならないのである。Power Query 勉強始めたばかりというならそりゃ難しいよね。だって、Power Query で記述しなければならないのだもの。おそらくなんだけど、使い方を教えてもらう機会があったとしてもさ、Power Query の関数までその中に含まれていないっていうこともあると思うのだ。四則演算の算術演算子くらいかもしれないね。使った場面をよく見かけるので、if then else も含まれているのかもね。

教える方がよくないのか、教わる方がよくないのか、どちらでもいいけど。

# 選りすぐりの関数
よく使うだろうという Power Query の関数を指折り数えていくつかくらいから始めて、徐々にボキャブラリを増やしていくという方針にしてみてはどうだろうかと。で、選りすぐってふたつだけ挙げてみる。

- List.Sum
- Date.ToText

## List.Sum 関数

https://docs.microsoft.com/en-us/powerquery-m/list-sum

リストに含まれる数値を算術和が得られる。ポイントは、nullを無視すること と 演算精度を選択できること。

```text:List.Sum&#x20;(Power&#x20;Query)
List.Sum(list as list, optional precision as nullable number) as any 
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/c7f32f3a-d532-15e7-eee2-ed4c3a425463.png)

```text
List.Sum( { [Column1], [Column2], [Column3] } )
```
List.Sum 関数の *list* 引数は *list* 型のみ許容だから、"{ }" で括る必要があるだけ。あとはクリックだけでもできるでしょう。
ボタンポチポチ派であっても注意深く観察していれば List.Sum 関数はじめ 多くの List 関数が使われていることがわかるはずだ。なので、より一層勉強しておいた方がよいはず。List.Product とか List.Max とか計算方法のバリエーションがあるので、まずはこれひとつから初めてみるとよいかと。

**null を無視するのだから、**
0 として計算しようとして面倒なことする必要ななくなるよね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/b4e57867-5779-f9b9-4b23-304e739e6170.png)
こうすればいい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/254befb9-f5ea-39a3-9f5c-00245a8e2be3.png)
ね、簡単でしょ。


## Date.ToText 関数

https://docs.microsoft.com/en-us/powerquery-m/date-totext

日付(Date 型)を指定した書式で文字列に変換。まぁよくあるよね。

```text:Date.ToText&#x20;(Power&#x20;Query)
Date.ToText(
    date as nullable date,
    optional options as any,
    optional culture as nullable text
) as nullable text
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/f4d8f52e-19f6-ad68-7ae6-c9eace59f0cb.png)
可能な限り *culture* 引数 をしておいた方がよい。だって、動作環境によっては異なる文字列を得ることがあるからね。

https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings

標準の書式指定文字列だけでもバリエーションはたくさんあるのでそれぞれ試してみるとよい。

DateTime.ToText 関数 / DateTimeZone.ToText 関数 もあるからね。引数のデータ型に合わせたバリエーションが増えるだけ。また、Date.AddMonths 関数 と組み合わせれば会計年度とかすぐ出力できるでしょって感じ。

# 思ってたこと🙄

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">カスタム列の追加では Power Query の式を記述しなければならないわけよね。拗らせすぎはよくないけれども、もっと工夫できることがないかなとかも試すとよいのになと思うのです。if ネスト沼にはまってない？組み込みの算術演算子は倍精度で計算されるけど大丈夫？<a href="https://twitter.com/hashtag/PBIJP?src=hash&amp;ref_src=twsrc%5Etfw">#PBIJP</a> <a href="https://t.co/t66O8YPuzE">pic.twitter.com/t66O8YPuzE</a></p>&mdash; Takeshi Kagata / Power Platform 部 Power BI 科 🛌💤 (@PowerBIxyz) <a href="https://twitter.com/PowerBIxyz/status/1470236448297467904?ref_src=twsrc%5Etfw">December 13, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

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

http://qiita.com/PowerBIxyz/items/6c4735cb5b5712e70981

http://qiita.com/PowerBIxyz/items/52e563037b855a099ca9

- [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)