LoginSignup
3
1

More than 3 years have passed since last update.

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

Posted at

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

方法一覧

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

※sharedもreferenceも同じです。
image.png

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

ワークシートのRAND関数と同様で、0から1の範囲で乱数を作ります。
カスタム列の追加で使うと、行ごとにちゃんと違う乱数が入ります。クエリ更新により、乱数はさし変わります。
image.png
ちなみに乱数を全部同じにしたい、なんて場合は、列追加処理の前のステップで、関数の実行結果を値(下図ではRandomNumと名前を付けている)に入れてやればいいです。
image.png

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

その名の通りです。
image.png

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

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

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

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

単純に使う

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

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

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

列追加的に使う

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

ちなみに、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}
3
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
3
1