クエリ レイヤーとは、ArcGIS AllSource プロジェクトのマップに格納される SQL クエリです。 クエリ レイヤーを使用すると、データベースおよびクラウド データ ウェアハウス内の空間テーブル/ビューと非空間テーブル/ビューにアクセスすることができます。 たとえば、データベースにビューを作成するための権限はないが、フィーチャクラスのどのデータをマップに表示するか制限したいとします。 その場合、フィーチャクラスから特定のフィールドまたは値だけを選択するクエリ レイヤーをマップに作成します。
ヒント:
クエリ レイヤーは SQL を使用してデータベースに直接アクセスするため、データはエンタープライズ ジオデータベースの一部である必要はありません。ただし、必要であれば、エンタープライズ ジオデータベースのテーブルやフィーチャクラスに対してクエリ レイヤーを定義することはできます。
クエリ レイヤーを作成する SQL クエリを定義することができます。 クエリは、指定したデータベースまたはクラウド データ ウェアハウス内のテーブルとビューに対して実行されます。クエリに空間列が含まれている場合は、結果セットがレイヤーとしてマップに追加され、空間列が含まれていない場合は、スタンドアロン テーブルとしてマップに追加されます。
クエリ レイヤーを定義する SQL クエリは静的な SQL ステートメントであり、マップでレイヤーが表示されたり使用されたりするごとにデータベースまたはデータ ウェアハウス内で実行されます。 このため、データのコピーやスナップショットを作成することなく最新の情報を表示できます。 これは、頻繁に変更される動的な情報を操作する場合に特に便利です。 しかし、SQL ステートメントの一部が事前にわからない場合も多くあります。 たとえば、ある地域の降水量の集約値を表示する場合に、測候所の降水量の値を日、週、月のいずれで集約するかが事前にわからない場合があります。 クエリ レイヤーのパラメーターを使用すると、SQL ステートメントの構成要素を動的にすることができます。
クエリ レイヤーを操作する場合には、以下の点に注意してください。
- クエリ レイヤーは、特定のデータベース管理システムおよびクラウド データ ウェアハウスでサポートされています。
- テーブルをプロジェクト内のデータベースからマップ上にドラッグすると、ArcGIS AllSource で、そのテーブルからすべてのフィールドと行を選択するクエリ レイヤーが自動的に作成されます。 レイヤーのプロパティでクエリ レイヤーの定義に変更を加えることで、マップで使用可能なものを変更することができます。 ただし、テーブルに何百万ものフィーチャが含まれている場合は、レイヤーをマップ上にドラッグしないでください。
- または、データをマップに追加する前にクエリ レイヤーを定義する方法もあります。 この方法は、エンタープライズ ジオデータベース内のデータのクエリ レイヤーを定義する場合またはクラウド データ ウェアハウス内のデータのクエリ レイヤーを定義する場合に使用する必要があります。
- クエリ レイヤーはマップ内の他のフィーチャ レイヤーやスタンドアロン テーブルと同じように動作するため、クエリ レイヤーを使用してデータを表示したり、クエリ レイヤーをジオプロセシング ツールへの入力として使用したり、プログラムで開発者 API を使用してクエリ レイヤーにアクセスしたり、クエリ レイヤーを公開したりすることができます。
- データベース接続から直接アクセスする場合、クエリ レイヤーは読み取り専用になります。
- クエリ レイヤーとしてアクセスされるデータベースを編集するには、Web フィーチャ レイヤーとして共有してポータルからアクセスします。 仮想列、where 句、結合をクエリ レイヤーに含めることはできません。 また、クラウド データ ウェアハウス内のデータにアクセスするクエリ レイヤーは、Web フィーチャ レイヤーを経由しても編集することができません。
- クエリ レイヤーがデータベース内のデータに対して定義されている場合は、データをクエリ レイヤーから別のデータベースまたはエンタープライズ ジオデータベースにエクスポートできます。