小ネタ:乱数あれこれ|Power Query


以前にテスト用データを作ったことがありました。今回は乱数に焦点を当てて、各方法の挙動、利用法をまとめてみました。

方法一覧

既定では関数が3つ用意されてます。

※sharedもreferenceも同じです。

Number.Random関数は、ただ単に乱数を作る。

ワークシートのRAND関数と同様で、0から1の範囲で乱数を作ります。
カスタム列の追加で使うと、行ごとにちゃんと違う乱数が入ります。クエリ更新により、乱数はさし変わります。

ちなみに乱数を全部同じにしたい、なんて場合は、列追加処理の前のステップで、関数の実行結果を値(下図ではRandomNumと名前を付けている)に入れてやればいいです。

Number.RandomBetween関数は、乱数の範囲を絞って作れる。

その名の通りです。

上の画像の通り、整数に限定されません。ここがワークシートのRANDBETWEEN関数と違うところです。
整数にしたいときは自分で丸めましょう。

List.Random関数は、変更されない乱数を作れる。

この関数の特徴は、seed引数を設定することで、乱数を固定できるところです。
ただし、Listを返す関数ですから、上の2つの関数と同じ使い方はできません。
以下、seed引数を0で固定して、使い方を書いてみます。乱数の値が変わっていないことに注意してください。

List.Random関数の仕様
List.Random(count as number, optional seed as nullable number) as list

単純に使う

空のクエリに関数を入力後、テーブルに変換すればいいです。

既存のリストと組み合わせて使う

少し実践的です。Table.FromColumns関数で、リストをテーブルに組み上げます。
各リストの要素数が揃わない場合はnull値が入ります。

列追加的に使う

実用的にはこちらの方が多いかもしれません。
先ほどはリストからテーブルへの組み上げを行いました。これと逆に、テーブルをばらす関数――Table.ToColumns関数――も用意されています。これを使うと、テーブルをリストのリスト(リストの入れ子)に変換できます。

ちなみに、Listの結合はこんな具合で動作します。

{1,2,3} & {4,5,6} //{1,2,3,4,5,6}
{{1,2,3},{4,5,6}} & {7} //{{1,2,3},{4,5,6},7}
{{1,2,3},{4,5,6}} & {{7}} //{{1,2,3},{4,5,6},{7}}
List.Combine({{1,2,3},{4,5,6}}) //{1,2,3,4,5,6}