データベース テーブルの各行は一意に識別できる必要があります。これらは、Insights で使用されます。 一意性を識別する列を決定するには、次のロジックに従います。
- 主キーを探します。 1 つ見つかった場合は、主キーを定義する列を使用します。
- 一意としてフラグが付けられたインデックスを探します。 1 つ見つかった場合は、インデックスを定義する列を使用します。
ヒント:
一意のインデックスが使用され、選択した列に NULL 値が含まれている場合、予想外の結果となる可能性があります。 すべてのテーブルに主キーを定義しておくことをお勧めします。 主キーを定義できない場合は、データベースで一意のインデックスに参加している列に not null としてフラグを付ける必要があります。
上記の条件を満たしていない場合、ワークブックに追加するテーブルを選択した際に警告アイコンが表示され、一意識別子を適用する必要があります。 一意識別子は、データ内のすべての行を一意に識別する 1 つのフィールドまたはフィールドの組み合わせです。 1 つのフィールドが使用される場合、そのフィールドには一意の値のみが含まれ、NULL 値を含めることはできません。 複数のフィールドが使用される場合、個々のフィールドが一意の値のみである必要はありませんが、行の組み合わせは常に一意である必要があります。
一意識別子の選択セットは保存され、テーブルが再追加されるたびに設定が自動的に適用されます。 Insights in ArcGIS Enterprise の場合、一意識別子の情報は、ArcGIS Server が再起動されたりブラウザーのキャッシュが無効にならない限り、ブラウザーに保存されたままです。 Insights desktop の場合、一意識別子はセッションの継続期間中は保存されていますが、Insights desktop を終了すると無効になります。
一意識別子は、文字列または整数の列を使用して作成できます。 date、float、double の列は、一意識別子として選択できません。
例
次のテーブルには、小売チェーンの売上データが含まれています。 テーブルには、店舗番号、店舗がある州、および売上の合計額が含まれています。 [店舗番号] と [総売上高] の 2 つのフィールドには、すべて一意の値が含まれており、NULL 値は含まれていません。 他のフィールドの [州] には一意の値は含まれていません。 この場合、[店舗番号] フィールドを一意識別子として使用する必要があります。各店舗がリストされるのは 1 回のみで、店舗番号は店舗ごとに常に一意であるためです。
店舗番号 | 州 | 総売上高 |
---|---|---|
1001 | コロラド | 1,583,296.29 |
1002 | コロラド | 1,938,495.84 |
1003 | ワイオミング | 1,439,752.57 |
1004 | モンタナ | 2,583,485.83 |
1005 | モンタナ | 928,573.67 |
1 つのフィールドが一意識別子の要件に合わない場合、またはフィールドの値が常に一意であることに自信がない場合、複数のフィールドを組み合わせて一意のエントリを作成することができます。 次のテーブルには、各店舗で在庫があるアイテムの数が含まれています。 前の例とは異なり、[店舗番号] フィールドは一意ではありません。1 つの店舗で在庫があるアイテムが複数あるからです。 [アイテム ID] フィールドも一意ではありません。 現在のところ [数量] フィールドは一意です。しかし、店舗に在庫があるアイテムの数は変化するので、常に一意とは限りません。そのため、このフィールドを識別子として使うことはできません。 識別子に適切なのは、[店舗番号] フィールドと [アイテム ID] フィールドの組み合わせでしょう。各アイテムは、店舗ごとに 1 回だけリストされているからです。
店舗番号 | アイテム ID | 数量 |
---|---|---|
1001 | 123456 | 20 |
1001 | 234567 | 5 |
1001 | 345678 | 16 |
1002 | 123456 | 11 |
1002 | 234567 | 0 |
1002 | 345678 | 21 |
一意識別子の選択
データベース テーブルから一意識別子を適用するには、次の手順を実行します。
- 警告アイコン をクリックします。
[一意識別子の選択] ウィンドウが表示されます。 ウィンドウには、データベース テーブル内の NULL 値を含まない非空間フィールドと、そのフィールド タイプが表示されます。
- 次のいずれかを実行します。
- どの列もしくはどの列の組み合わせが一意識別子の作成に最適であるかを把握している場合は、該当するフィールドを選択します。
- どの列もしくはどの列の組み合わせが一意識別子の作成に最適であるかを把握していない場合は、[分析] ボタンをクリックしてテーブルをスキャンし、すべての個別値を含む列を特定します。 個別値を含む列を表示するには、次のアイコンを使用します。
- テーブルに一意識別子として使用できる列が含まれていない場合や、既存のフィールドから一意識別子を作成しない場合は、[データベース テーブルをコピーして主キーを作成する]、またはデータ ワークブックで [主キーの作成] を選択できます。
- [適用] をクリックします。
主キーの作成
一意識別子として使用できる列が含まれていないデータベース テーブルがあります。 そのため、Insights でテーブルを使用する前に、主キーを作成する必要があります。
主キーは、[データベース テーブルをコピーして主キーを作成する] (Insights ワークブック) または [主キーの作成] (データ ワークブック) を使用して作成されます。
Insights ワークブックでの主キー
Insights は、主キーの列の追加など、データベース テーブル内のデータは編集しません。 主キーを適用する前に、データベース テーブルのコピーが作成されます。 コピーされたデータベース テーブルの場所は、データベース接続の権限によって異なります。 読み取り/書き込みができる接続の場合、コピーされたテーブルはデータベースに格納されます。 読み取り専用の接続の場合、テーブルは Insights ワークブックにコピーされて格納されます。 ワークブックにコピーされたデータセットには、ホスト フィーチャ レイヤーまたはアップロードされたファイルと同じ機能があります。
データ ワークブックでの主キー
注意:
データ エンジニアリングは、Insights desktop で使用できます。 すべての Insights in ArcGIS Online および Insights in ArcGIS Enterprise ユーザーは、Insights desktop にアクセスすることができます。 詳細については、「ArcGIS Insights の概要」をご参照ください。
データ エンジニアリングは現時点でプレビュー版です。
データ ワークブックでは、データベース テーブルに一意識別子が必要です。 データ モデルを実行すると新しいデータセットが作成されるため、最初にデータベース テーブルをコピーして主キーを追加する必要はありません。 データ モデルを実行すると、新しい一意識別子の列 (id) がテーブル ビューに表示され、出力データセットに追加されます。