PowerApps│もう迷わない!テーブルとレコードの違いと使い方

アイキャッチ-基礎知識

こんにちは、あんこ先生です。

関数を使って任意の値を持ってきたいけど、うまくいかないことってありませんか?

それは、テーブルとレコードの関係、関数の戻り値を理解していないからです。

例えば、Filter関数で1レコードまで絞り込んだとします。

これをラベルコントロールText=絞り込んだテーブル.Valueとしても何も表示されません。

なぜなら、Textプロパティテーブルではなくレコードを参照するからです。

このように、テーブルとレコードの関係、関数の戻り値を理解していないと沼にはまることがあります。

この記事では、テーブルとレコードの違い、主要な絞り込み関数の仕組みをコード付きで解説します。

これでもう迷わない!

テーブルとレコードの違い


テーブルとは

簡潔に述べると、表です。

1つ以上のレコードで構成され、レコード間で項目名とデータ型が一貫しています。

テーブルには名前があり、参照や関数の記述に使用します。

カレンダーで例えると、カレンダーそのものがテーブルです。日付や曜日がカラム(列)、それらを各1つずつ束にしたものがレコード(行)です。

PowerAppsでは、データソースかコレクションだと認識してもらえば大丈夫です。

フィールド単一の値)を抜き取るには、まずレコードを特定し、次にカラム名を指定する必要があります。


レコードについて

簡潔に述べると、表に含まれる1つ1つの行(横軸)です。

SharePointリストではアイテムと呼びます。

1つ以上のカラムとその値で構成されます。

カレンダーで例えると、日付や曜日を含む行がレコードです。


カラムについて

簡潔に述べると、表に含まれる1つ1つの列(縦軸)です。

項目名と格納できるデータ型で構成されています。

カレンダーで例えると、項目名は日付、データ型はDate型といった具合です。

Excelと異なり、データ型が一致しないデータは保持できません。


フィールドについて

簡潔に述べると、表のうち、カラム(縦軸)とレコード(横軸)が交わう場所です。

実際にデータが格納されている場所です。


親がテーブル、子はレコード

テーブルという箱に、レコードを詰め込む感じですね!

テーブルを入れ子にすることもできますが、それはまた別の記事で。

2種類のテーブル

1つのテーブルに、なんでもかんでも情報を詰め込みすぎると管理が煩雑になります。

基本的な情報と記録はテーブルを分けて管理しましょう。


マスターテーブル

運用上、頻繁に更新を行わない基本的な情報が格納された半固定的なテーブルです。

例えば、社員情報や商品情報などが挙げられます。

主たる目的は参照されることで、主キーから社員名や商品名を紐づけさせたり、グルーピングさせたりするときに利用されます。


トランザクションテーブル

運用上、頻繁に更新を行う記録情報が格納されたテーブルです。

例えば、勤怠情報や出荷情報などが挙げられます。

レコード数が膨大なため、基本的な情報を保持させるとメンテナンスが大変です。

それを回避させるため、外部キーを持たせて、基本的な情報はマスターテーブルを参照させます。

マスターテーブルはM_、トランザクションテーブルはT_を頭につけると管理しやすいよ。

テーブルを戻り値とする関数


Filter関数

テーブル操作に関して、最もお世話になる関数ではないでしょうか?

委任可能な全レコードから条件をすべて満たすレコードを抽出し、そのテーブルを返します。

複数条件の場合、それらはAND処理されます。

たとえば、

  • 社員情報から、名字が”佐藤”のレコードを抽出したテーブルを返す。
  • 商品情報から、発売日が2022/2/22以降のレコードを抽出したテーブルを返す。
Filter(_AreaCollection,Group=Dropdown1.Selected.Area)


Search関数

委任可能な全レコードから、指定した単一または複数の項目で文字列を含むレコードがあれば抽出し、そのテーブルを返します。

この検索は、部分一致も含みます。また、大文字と小文字は区別しません。

文字列が空の場合は、全レコードが対象になります。

ただし、検索できるのはテキスト型のみで、数値は対象外です。

たとえば、

  • 名字か名前に”藤”が含まれているレコードを抽出したテーブルを返す。
  • 取引先名に”合同”が含まれているレコードを抽出したテーブルを返す。
Search(_AreaCollection,TextInput2.Text,"Area")


FirstN・LastN関数

全レコードから、先頭または後尾から引数で指定したレコード数を抽出し、そのテーブルを返します。

LastN関数は降順ではなく、レコード数分を昇順で返します。

ワースト5など降順で抜き取りたい場合は、降順で並び替えたテーブルをFirstN関数で抽出します。

たとえば、

  • トップ5など、先頭から5レコードのみのテーブルを返す。
  • ある会員が最近利用した履歴5レコードのみのテーブルを返す。
FirstN(_AreaCollection,5)
LastN(_AreaCollection,5)

委任できないため、絞り込んでも500件以上になるデータソースにはオススメできません。

レコードを戻り値とする関数・コントロール

テーブル


LookUp関数

委任可能な全レコードから、条件を満たす最初のレコードを抽出し、そのレコードを返します。

条件は1つのみです。複数条件としたい場合は他関数と組み合わせる必要があります。

たとえば、

  • 地方が”近畿”で最初に見つかったレコードを抽出する。
  • 人口が”100万人以上”で最初に見つかったレコードを抽出する。
LookUp(_AreaCollection,Group="近畿")


First・Last関数

委任可能な全レコードから、最初または最後のレコードを抽出し、そのレコードを返します。

Sort関数と組み合わせることで、特定項目の上位下位を抽出できます。

First(_AreaCollection)
Last(_AreaCollection)


Gallery01.Selected・Dropdown01.Selected

ギャラリーコントロールドロップダウンコントロールで選択しているレコードを返します。

ギャラリーコントロールで詳細を表示させる、フォームコントロールで処理させる際、レコード特定に重宝します。

//Gallery00.Itemsプロパティ
Gallery01.Selected
//Form00.Itemプロパティ
Dropdown01.Selected

まとめ

データベースの基本、テーブルとレコードの違いは理解できましたか?

  • 戻り値がテーブルとなる関数で、レコードを委任できる500件未満に絞りこむ。
  • 戻り値がレコードとなる関数で、必要な単一レコードを抜き取る。

関数やコントロールの戻り値がどちらかを判別できれば、スムーズにアプリ開発が進みます。

この記事の内容を覚えて実践できれば安心ですね。

忘れないうちに実践してみましょう!

アイキャッチ

ご支援よろしくおねがいします

この記事を気に入ってくださった方、寄付してあげてもいいよという方がいらっしゃっいましたら、ご支援いただけると助かります。

下記リンクからAmazonギフト券で、金額は15円からお気持ちを入力してください。

受取人のメールアドレスは amazon@anko7793.com までお願いします。

メッセージもいただけるとたいへん喜びます。

よろしくお願いします。

Amazonギフト券(Eメールタイプ) 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
七草あんこ
非IT系中間管理職やってます。社命によりoffice365を主軸とした業務改善プロジェクトメンバーに任命されたことでPowerAppsと出会えました。いまではビジネス・プライベートを問わず、欠かせないツールになっています。導入初期やアプリ作成時に遭遇した諸問題の解決法とサンプルアプリの作り方を紹介していきます。主にTwitterで情報収集しているので不明点など呟いているとお邪魔するかもしれません。