Power Apps の AddColumns 関数は、参照しているテーブルに対して、独自の列を関数を用いて生成することができます。
データを元に合計値を自動計算したり、別のデータソースからLookupしたりなど、とても有用な関数です。
ですが、このAddColumns関数で生成したテーブルの件数には、実は制限があります。
実は公式のDocsにもサラッと書いてある。
Microsoft Docs | Power Apps の AddColumns、DropColumns、RenameColumns、および ShowColumns 関数
公式のDocsにも実はこんなふうに書いてあったりします。
そうなんです、AddColumns関数で出力される件数は、500件まで
正確には、データ行の制限に指定された件数までしか取得できません。
AddColumns 関数の先がその件数を超えていたとしても、その件数までしか出力できません。
実際に試してみましょう
5000件近いデータが入ったSharePoint リストを用意します。
AddColumns関数で年代別の列を追加する
データテーブルのItems に以下の関数を入力してみます。
※年代別の列を追加し、20代でフィルター
Filter(
AddColumns(
testdata5000,
"価格",Value(Mid(balance,1,Len(balance)-1)),
"年代",If(
And(age>=0,age<10),"0代",
And(age>=10,age<20),"10代",
And(age>=20,age<30),"20代",
And(age>=30,age<40),"30代",
And(age>=40,age<50),"40代",
And(age>=50,age<60),"50代",
And(age>=60,age<70),"60代",
And(age>=70,age<80),"70代",
And(age>=80,age<90),"80代",
And(age>=90,age<100),"90代"
)
),年代="20代")
そうすると以下のようなデータテーブルが生成できました。
データ件数を調査してみると、このようになりました。
AddColumns での件数は244件
それに対して、SharePointでの件数では2405件
全然違いますね!
しかも、不思議なことにAddColumnsの件数は500件にも満たしていません。
年齢ごとに更に分析してみる
20代の各年齢ごとに何件あるかそれぞれ比較してみました。
各年齢毎で調べてみると AddColumnsで生成したテーブルには20件前後のデータしか存在しません。
AddColumnsの列生成の対象レコード
AddColumnsで列を生成する際は、対象のテーブルのうち最初の500件のみを使って、そのデータから列の生成処理を行っているようです。
なので、AddColumnsを使って列生成を行うためには、対象のデータソースが500件以内である必要があります。
データソースの指定時はFilter関数などをある程度集約した状態で実施しておくなどの工夫をする必要があります。
まとめ
AddColumnsは本当にとても便利な関数です。
ただし、使用するにはとても慎重に行う必要があるとも言えます。
対象のデータがどういうもので、どれだけの件数があるのかなど、逐一確認するようにしておくと良いでしょう。