トピックス

知識創造研究室 by CRM(xRM)

Dataverseの プライマリ列(プライマリフィールド)の落とし穴

はじめに

Dataverseと関連する用語は、20213月に用語の変更が行われました。
この記事では、用語が最初に登場する箇所では、新名称(旧名称)の形で併記して記載しています。

こんにちは。今回はDataverse(CDS)のプライマリ列(プライマリフィールド)についての小ネタです。
私の経験談を交えて、プライマリ列をカスタマイズする際の落とし穴(注意点)2つご紹介いたします。

プライマリ列とは

まず、はじめにプライマリ列についてざっくりと説明しておきます。
プライマリ列はDataverseテーブル(エンティティ)を作成された際に必ず作成されるフィールドです。
プライマリ列の特徴を、一言でいうと「レコードの特徴を表わすフィールド」です。アプリの画面では、フォーム画面の左上に表示されます。

よく間違えられますが、データベースでレコードを一意に特定するための「キー」とは異なります。キーとなる列は、一意識別子」という別の列に格納されています。プライマリ列は、キーではないので、1つの環境で、プライマリ列の値が全く同じたデータが存在する場合があります。

では、プライマリ列のカスタマイズで、どんな落とし穴があるのでしょうか。

落とし穴1 名前を変える時はテーブルの作り直しになる

プライマリ列は、テーブルの作成時に、表示名と名前(論理名)を決める必要があります。とりあえずと、適当に名前をつけると、後から問題がおこるかも。
なぜなら、プライマリ列は削除ができません、名前を後から変更できません。変更する場合は、テーブルごと作り直しになります。

私が過去に体験した例ですが、製品情報を格納するテーブルのプライマリフィールドを規定の名前(new_name)で作成しました。列を数十個ほど追加した段階で、設計担当から「プライマリ列は、製品名でなくて、製品コードが入るからnew_codeが適切な名前。作り直して」と言われました。テーブルの作成からやり直しになりました。

テーブル定義の段階でどんなデータが入るか明確にしておきましょう。もし、決まらない場合は、どんなデータが入っても違和感がない、名前(new_primary)をつけておくという対処方法もあります。

落とし穴2 最大長(文字数)に注意

プライマリ列の最大長は、規定で100文字になっています。これ、適切な長さでしょうか。
とりあえずと、100文字のままにしておくと、後から問題が起こるかも。

どれくらいの長さの値が入るか検討しましたか?
確かに、値が氏名や会社名だったら、
100文字は超える可能性は低そうです。では、メールアドレスはどうでしょう。標準化規格によると理論上は、245文字だそうです。製品名はどうでしょうか。超える事ありそうですよね。

私が最近体験した例ですが、外部システムで登録した情報を、WebAPIを使用してDataverseに登録する処理で、エラーが発生していました。調査したところ、プライマリ列の上限100文字を超えるデータを登録する時にエラーが発生していました。仕様変更により100文字を超える場合が発生していたのです。対応として、上限を増やして解決しました。

ちなみに、プライマリ列に設定できる、最大文字数は850でした。Dataverse 内でインデックスとして使用している事が理由のようです。1行テキスト型の最大値4000より短いので注意です。

 

まとめ

プライマリ列は、テーブル作成時に、「とりあえず」で作ってしまうことがあるかもしれませんが、

どのような種類の、どれくらいの長さのデータが入るか、良く考えてから作成しましょう。

以上です。

この記事を書いた人
沼上 歩

「つくる事で世の中を変えたい」との思いで、IT業界に飛び込む。
Web系・金融系のを経て、2015年より Dynamics CRM の世界へ。
Dynamics の「人と人と、人と企業と、人と〇〇と」をつなげご縁を
作り出す可能性にワクワクしながら、日々の業務に取り組んでいます。
最近は、「IoTとCRMと」をつなぎ面白い事ができないか考えています。

同じカテゴリの記事

Translate »