モダンテーブル の並び替え と大量データ時の挙動について

はじめに

前回の記事で大量データを扱う際のギャラリー、データテーブル(クラシック)、モダンのテーブルの挙動を比較しつつ確認しました。
今回はモダンのテーブルに標準で備わっている列の並び替えの挙動と大量データでも行けるかの確認となります。
前回の記事はこちら

モダンのテーブルについてのその他記事はこちら

NOTE2024/7月上旬のバージョン:3.24064.18 で検証しています。今後のアップデートで変更となる可能性があります。

モダンのテーブルコントロールの並び替え機能

従来のギャラリーやデータテーブルにはなかった、列ごとの並び替え機能(昇順:降順)がモダンのテーブルコントロールだと標準で備わっています!これは便利ですよね!
従来のギャラリーやデータテーブルではない機能なので、別途対象列を指定してSort関数で並び替えて表示という感じで実装が必要でしたし、それが複数列対応となると結構厄介でした(動的に切り替わらないのでその分数式をIfで分けたりが必要だったり)

標準で列ごとに並び替え(昇順、降順)が付いている

NOTE複数の列に対しての昇順、降順指定は出来ません。(カテゴリ順でそのうち同じものについてはタイトル順にするなど2次的な並び替え)

あくまで1列ずつのソート機能となります。別の列を指定すると前の列の指定はクリアされます。
SortやSortByColumns関数だと複数項目での並び替えにも対応するのでそのあたりは要件次第ですね。

タイトル降順にした場合
カテゴリ降順にした場合

モダンテーブルのその他のプロパティなどについては以下公式ページもご参考ください。
Power Apps でのテーブル コントロール – Power Apps | Microsoft Learn

Reflowで幅が狭くなった場合またはList Onlyにした場合でも並び替え可能

この場合、リスト表示となり最初の3行までの表示に切り替わるんですが、右上の並び替えアイコンをクリックすると各列項目が出て来て並び替えが可能です!これも親切!

【SPOリストの場合】大量データ(5000件以上)での挙動

Dataverseでは大量データ数万件でも特段問題ないと思います。(すいません、確認してませんがおそらくは)

SPOリストの場合だと従来からある5000件以上の場合に対処していないとエラーとなります。

NOTEこの件については、ギャラリーでも同様ですね。ソート対象にした列にインデックスが付いていないと(今はエラーが表示されなかった記憶ですが)空白になり並び替えて取れません。

SPOの5000件問題についてはMVP太田さんの資料が大変分かりやすいのでご参考ください。
よく聞くけど、SharePoint リストの 5,000 件問題ってなんなの? | ドクセル (docswell.com)

検証は5万件のデータを格納したSPOリストで行っています。以下、特に対応せずにそのまま並び替えを行った場合のエラー表示です。
リストビューのしきい値を超えているため実行できません。となっています。

5000件以上のデータがあるSPOリストで(特に対応せずに)並び替えを行った場合のエラー

列にインデックスを付ける

簡潔にお伝えすると列にインデックスを付ける機能がSPOリスト側にあります。
ここにソート対象の列を指定してあげれば上記のエラーは解消します。
※すでに件数が多い場合はインデックス作成にも少々時間がかかります。

SPOリスト>リストの設定>インデックス付きの列
対象の列を選択して作成

インデックスを付けれる数と列の種類には制限あり

上記ですが、インデックスを付けれる列には件数と種類の制限があります。
以下の制限にかからない列で20件までであればインデックスを付ければエラーは解消できます。

NOTE・作成は1リストで20列までとなります。
・付けれない列の種類があります!(複数行や複数選択肢、集計値など)

TIPSID列は最初からインデックスが付いているので考慮せずOKです。追加の候補にも出てきません。

リストまたはライブラリ列にインデックスを追加する – Microsoft サポート

インデックスを付けてエラーを解消した例

先ほどの列「columns1」に対してインデックスを付けました。
その他、はいいいえ列、ユーザー列、選択肢列(単一)、日付列にもインデックスを付けています。


以下のように今度はエラーなく、最後の5万件目の列から降順で取得が出来ています。

並び替え出来る列(テキスト、数値、選択肢(単一)、はい/いいえ、日付)で確認

どの種類の列が並び替え出来るかを確認してみました。テキスト、数値は前段で確認済みのため割愛しています。
以下の通り、はい/いいえ、選択肢(単一)、日付列も並び替え可能でした。
※複数行テキストは大量データの際にインデックス付けれないので普通のリストで検証しています。

ユーザー列はインデックス付けてもエラーとなる。5000件未満ならOKだった

これは意外だったのですが、ユーザー列については大量データリストでインデックスを付けた場合でもしきい値を超えるエラーとなり並び替えが出来ませんでした。インデックスが効いていない挙動でした。
5000件未満のデータの場合であれば並び替えが可能でした。

5000件未満のデータであればユーザー列の並び替えが可能だった
5000件以上のリストでインデックスを付けた状態でもエラーとなった

複数行テキストはNG。添付ファイルもNG

複数行テキストと添付ファイルについて件数の少ないリストで試したのですがどちらも別のエラーとなり並び替えの対象外のようでした。

並び替え対象外なのはまだいいのですが、であれば非表示としてもらいたいものですね汗
並び替えのアイコンが出てしまっているので押してしまいますよね。その場合にエラーとなるというのはよろしくないと思います。現状プレビューなのでGAの際には解消すると想定しております。

NOTE現状では並び替えの対象外の列についても並び替え対象のアイコンが出ていますが非表示にする方法が見当たりません。

NOTE編集時にエラーとなった場合、並び替え機能が動かなくなるので、一旦データソースの最新化、それでも治らない場合は、データソースを再指定するなどの対処が必要でした。
または一旦リスト表示にして並び替え対象列を対応する列に変更すれば解消しました。

おわりに

今回はモダンのテーブルコントロールの並び替え機能について確認してみました。
あわせて大量データの場合の列のインデックスでの解消方法や、並び替え対象外の列などご紹介しました。
従来のギャラリーではない機能が標準で付いているので大変便利な反面、対象外の列やデータ量での注意点もありますね。
あくまで現時点ではプレビュー段階なので今後対応されることを期待し、次のアップデートやGAを待ちましょう!それでは!

関連記事

大量データ取得の動作比較 ギャラリー・データテーブル・モダンテーブル

モダン関連:

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

ヨウセイ

ヨウセイ

一般職からSharePoint、C#、.NET系技術者へ、そこからPower App、Power Automate技術者へと転身。 ワンランク上のおっさんはPower Appsでシステム開発が出来る〜! qiitaや自社HPでも技術ブログを書いていました。

関連記事

コメント

この記事へのコメントはありません。

CONTENTS