Power AppsPower AutomatePower Automate for cloudtipstips

【マシュマロ回答】大量データ登録時の処理時間削減・Power AutomateのURLコピー

Power Apps

マシュマロでいただいた以下の質問の回答記事です。

大量データ登録時の処理時間削減

結論10000行を5分で処理するのは難しいです。回避策としてアプリを操作できるように、Power Automateで行追加処理を行い、完了したらメールでお知らせするとかいかがでしょうか。

Patch(Collect)関数での行追加の処理時間

データソースへの大量行追加といえば、ForAll + Patch関数で複数回Patch関数を実行するか、Patch関数でテーブルを追加する方法が有名です。

Patch関数を1000回実行する処理

しかしこの方法では、Patch関数を1回づつ実行するためかなり時間がかかってしまい、1000行を追加するのに6分もかかってしまいました。

開始時点のNow()と終了時点のNow()を減算して×86400すると処理秒数を算出できます

ちなみに列の型を揃える必要がありますが、テーブルでまとめて追加する場合には19分で処理が完了しました。

Patch(
    エクスポートテスト,
    DropColumns(
        Ungroup(
            AddColumns(
                Sequence(10000),
                "Def",
                Table(Defaults(エクスポートテスト))
            ),
            "Def"
        ),
        "Value"
    )
)

回避策

流石に5分で10000件を処理完了するのは厳しいので、要件次第ですがPower Automateで行追加の処理を行い、完了したらメール等で通知という処理にするといいかもしれません。

こんな感じの行追加フローを作成して、完了したらメールを送信します。

…→設定からコンカレンシー制御をオンにすると並列処理が可能となり、処理を高速化できます。

1000行を5分で処理できました。Power Appsで処理するのとそこまで変わらないですね。

力技ですが並列分岐させれば並列で行を追加できるので、処理時間を削減できます。

処理時間についてはこちらの記事もご参考ください

Power AutomateのURLコピー

Power Automateでリストを他のリストにコピーする際、リンク列の表示文字列(代替テキスト)はコピーされません

SharePointコネクタの複数の項目アクションには表示文字列の情報は含まれていないため、アクションの結果から取得することは出来なさそうです。

HTTP要求が環境の制限により使用できないとのことなので、以下の方法も使えなさそうです。

PowerAutomateでSPOリストのハイパーリンク代替テキストを設定 #PowerAutomate - Qiita

となると、複数行テキスト列にリッチテキストとしてURLを埋め込む方法くらいしかないと思います。

複数行テキスト列で、拡張リッチテキストを使用(画像、表、ハイパーリンクを含むリッチテキスト)をはいにして列を作成します。

SampleListの一番上の行のLink列をコピーします。

以下の通り、複数行テキスト列であればリンクの代替テキストを保持したままURLをコピーできました。

コメント

タイトルとURLをコピーしました