DataverseにIDがない理由|GUIDとは何か、SharePointのIDとの違いを解説

SharePointリストのIDに慣れていると、Dataverseのテーブルを初めて開いたとき「あれ、ID列がない?」と戸惑います。でも実際には、IDに相当するものはちゃんとあります。名前が違うだけです。

この記事では、DataverseのGUIDとは何か、SharePointの連番IDとどう違うのか、そしてテーブルと同じ名前の列が2本あるように見える謎を順番に整理します。

SharePointのID列とDataverseのIDの違い

SharePointのID:1から始まる連番

SharePointリストのID列は、レコードを追加するたびに自動で1, 2, 3……と増えていく連番です。視認性が高く、「今何件登録されているか」を直感で把握できます。フローの条件式でも 「ID eq 123」のように数値比較できるので、扱いやすいです。

ただしこの連番はSharePoint特有の仕様で、削除したレコードの番号が再利用されることはありません。100番を削除しても、次のレコードは101番になります。

DataverseのID:GUIDという文字列

Dataverseのテーブルには連番IDが存在しません。代わりに、レコードごとに自動で割り振られる「GUID」がIDの役割を担います。

GUIDとは、Globally Unique Identifierの略で、世界中で重複しない一意の識別子を生成する仕組みです。見た目はこんな形になります。

a1b2c3d4-e5f6-7890-abcd-ef1234567890

ハイフンで区切られた32文字の英数字です。ランダムに生成されるため連番にはなりませんし、人間が覚える必要もありません。Power Appsのギャラリーや数式の内部で自動的に参照されるので、開発者がGUID自体を意識する場面はほとんどありません。

とはいえ、「IDが連番でない」という事実はフローや数式の設計に影響することがあります。特にSharePointのID列を前提にした設計(例:Auto-incrementで採番したいなど)を持ち込もうとすると、壁にぶつかります。

「テーブルと同じ名前の列が2本ある」謎を解く

なぜ同名の列が2本に見えるのか

Dataverseのテーブルを列の一覧で見ると、テーブル名と同じ名前の列が2本存在するように見えることがあります。たとえば「案件管理」というテーブルを作ると、「案件管理」という列が2本表示されるようなイメージです。

これは仕様です。2本あるように見える列のうち1本は「プライマリ列(Primary column)」——つまり主キーとは別の「表示名」として機能する列です。SharePointリストの「タイトル(Title)」列に相当します。

もう1本はテーブルの主キーとなるGUIDを格納する列で、テーブル名に「ID」を付けた名前になっています(例:案件管理ID)。この列が実質的なIDの本体です。

プライマリ列とGUID列の違い

列の種類役割データ型ユーザーが入力するか
プライマリ列(テーブル名と同名)ルックアップ時の表示名テキストする
GUIDを格納する列(テーブル名+ID)レコードの一意識別子(主キー)一意識別子(GUID)しない(自動生成)

ルックアップ列(他のテーブルを参照する列)を設定すると、参照先のプライマリ列の値がドロップダウンに表示されます。SharePointリストの「タイトル列がルックアップの表示名になる」動作と同じ仕組みです。

テーブルを作ったら最初に「プライマリ列に何を入れるか」を設計しておくと、後のルックアップ設定がスムーズになります。

Excelライブ編集でGUIDを実際に見てみる

GUIDが自動生成されることは説明しましたが、「本当にそんな列があるのか」を目で確認したいなら、Dataverseの「Excelでデータを編集する」機能が手っ取り早いです。

make.powerapps.com でテーブルを開き、上部メニューの「データの編集」→「Excelで編集」を選ぶと、Excelがライブ接続の状態で開きます。そこには画面上には表示されていないGUID列も含め、テーブルの生データが全列分表示されます。

自分が初めてDataverseを使ったとき、このExcel表示を見てようやくGUIDの存在が腑に落ちました。「そうか、ここに書いてあるこれがIDの正体か」という感覚です。概念として理解するより、生データを見るほうが早いことは多いです。

詳しい使い方はDataverseのExcelライブ編集で解説しています。

GUIDは「覚えなくていいが、存在は知っておく」

日常的な開発では、GUIDを直接扱う場面はほとんどありません。Power Appsの数式でレコードを参照するときも、GUIDを意識せず「ThisItem」や「LookUp」で操作できます。

ただし以下のようなケースでは、GUIDの存在を知っていると解決が速くなります。

  • Power Automateフローで「レコードのID」をどの列から取得するか迷ったとき
  • 別のテーブルからルックアップで参照したレコードを特定したいとき
  • SharePointのID列を使ったフローをDataverseに移行しようとして詰まったとき

SharePointのIDに慣れていると「DataverseにはなぜわかりやすいIDがないんだ」と感じることもあります。でも、GUIDはグローバルなシステム間連携を想定した仕様です。SharePointは社内の小規模リストを想定した連番、Dataverseはエンタープライズ規模のデータ管理を想定したGUID、という設計思想の違いとして理解しておくと気持ちが楽になります。

DataverseとSharePointリストの構造的な違いについては、SharePointリストとMicrosoft Listsの記事もあわせて参照してください。また、Power AppsでSharePointリストのデータをCRUD操作する具体的な手順はこちらの記事でまとめています。

まとめ

  • DataverseにはSharePointのような連番IDはなく、代わりにGUID(一意識別子)がレコードを識別します
  • テーブルと同じ名前の列が2本に見えるのは「プライマリ列(表示名)」と「GUID列(主キー)」が別物だからです
  • GUIDはExcelライブ編集で生データとして確認できます
  • 日常の開発でGUIDを直接操作する場面は少ないですが、存在と役割を知っておくと詰まったときに早く解決できます

Dataverseの全体像はDataverseをSharePoint経験者向けに完全解説にまとめています。

Xでフォローしよう