次の方法で共有


リレーショナル クエリ デザイナー (SSAS)

リレーショナル クエリ デザイナーを使用すると、Microsoft SQL Server リレーショナル データベース、Microsoft Windows Azure SQL データベース リレーショナル データベース、および Microsoft SQL Server 2008 R2 並列データ ウェアハウスから取得するデータを指定するクエリを作成できます。 メタデータを検索してクエリを対話的に作成し、クエリの結果を表示する場合は、グラフィカル クエリ デザイナーを使用します。グラフィカル クエリ デザイナーで作成されたクエリの表示や、クエリの変更を行う場合は、テキスト ベースのクエリ デザイナーを使用します。 ファイルまたはレポートから既存のクエリをインポートすることもできます。

必要であれば、テキスト ベースのエディターを使用して、SQL 言語でクエリを作成することができます。 テキスト ベースのクエリ デザイナーに切り替えるには、ツール バーの [テキストとして編集] をクリックします。 テキスト ベースのクエリ デザイナーでクエリを編集すると、グラフィカル クエリ デザイナーは使用できなくなります。

注意

データ ソースの種類が Oracle、OLE DB、ODBC、および Teradata の場合にクエリを指定するには、テキスト ベースのクエリ デザイナーを使用する必要があります。

セキュリティに関する注意セキュリティに関する注意

ユーザーは、クエリを作成して実行する際にデータ ソースにアクセスします。 したがって、データ ソースに対する最小限の権限 (読み取り専用権限など) を付与する必要があります。

クエリの実行時、データ ソースへの接続には、[権限借用情報] ページで指定された資格情報ではなく、現在のユーザーの資格情報が使用されます。

グラフィカル クエリ デザイナー

グラフィカル クエリ デザイナーでは、データベースのテーブルとビューを検索し、データセットのデータを取得するデータベースのテーブルと列を指定する SQL の SELECT ステートメントを対話的に作成できます。 データセットに含めるフィールドを選択し、必要に応じて、データセットのデータを制限するフィルターを指定します。 フィルターをパラメーターとして使用することを指定すると、フィルターの値を実行時に提供できます。 複数のテーブルを選択した場合は、クエリ デザイナーによって 2 つのテーブルのセット間のリレーションシップが示されます。

グラフィカル クエリ デザイナーは、3 つの領域に分割されています。 クエリでテーブル/ビューとストアド プロシージャ/テーブル値関数のどちらを使用するかに応じて、クエリ デザイナーのレイアウトは変わります。

注意

SQL Server 2008 R2 並列データ ウェアハウスは、ストアド プロシージャまたはテーブル値関数をサポートしていません。

次の図は、テーブルまたはビューを使用した場合のグラフィカル クエリ デザイナーです。

クエリのグラフィカル デザイナー

次の図は、ストアド プロシージャまたはテーブル値関数を使用した場合のグラフィカル クエリ デザイナーです。

グラフィカル クエリ デザイナーのストアド プロシージャ

次の表に各ペインの機能を示します。

ペイン

機能

データベース ビュー

データベース スキーマ別に編成された、テーブル、ビュー、ストアド プロシージャ、およびテーブル値関数の階層ビューを表示します。

選択されたフィールド

データベース ビュー ペインで選択したアイテムのデータベース フィールド名の一覧を表示します。 これらのフィールドがデータセットのフィールド コレクションになります。

関数のパラメーター

データベース ビュー ペインのストアド プロシージャまたはテーブル値関数に対する入力パラメーターの一覧を表示します。

リレーションシップ

データベース ビュー ペインで選択したテーブルまたはビューのフィールドから推測されるリレーションシップ、あるいは手動で作成したリレーションシップの一覧を表示します。

適用されたフィルター

データベース ビューのテーブルまたはビューのフィールドおよびフィルター条件の一覧を表示します。

クエリ結果

自動的に生成されたクエリの結果セットのサンプル データを表示します。

データベース ビュー ペイン

データベース ビュー ペインには、表示する権限のあるデータベース オブジェクトのメタデータが表示されます。表示されるメタデータは、データ ソース接続と資格情報によって決まります。 階層ビューに、データベース スキーマ別に編成されたデータベース オブジェクトが表示されます。 各スキーマのノードを展開すると、テーブル、ビュー、ストアド プロシージャ、およびテーブル値関数が表示されます。 テーブルまたはビューを展開すると列が表示されます。

選択されたフィールド ペイン

選択されたフィールド ペインには、データセットのフィールド、およびクエリに含めるグループと集計が表示されます。

次のオプションが表示されます。

  • **[選択されたフィールド]   **選択したテーブルやビューのデータベース フィールド、またはストアド プロシージャやテーブル値関数に対する入力パラメーターが表示されます。 このペインに表示されるフィールドがデータセットのフィールド コレクションになります。

    データセットのフィールド コレクションを表示するには、レポート データ ペインを使用します。

  • **[グループ化と集計]   **クエリでのグループ化と集計の使用を切り替えます。 グループ化と集計を追加した後にグループ化と集計の機能をオフにすると、グループ化と集計が削除されます。 [(なし)] は、グループ化と集計を使用しないことを示します。 グループ化と集計の機能を再びオンにすると、以前のグループ化と集計が復元されます。

  • **[フィールドの削除]   **選択したフィールドを削除します。

グループ化と集計

大きなテーブルを持つデータベースに対してクエリを実行すると、使用できないほど多数のデータ行が返され、大量のデータを転送するネットワークのパフォーマンスに悪影響を与える可能性があります。 データベース サーバー上のデータを要約する SQL 集計をクエリに含めると、データ行の数を制限することができます。

集計ではデータの要約が返されます。データは、要約データを提供する集計をサポートするためにグループ化されます。 クエリで集計を使用すると、そのクエリによって返される他のフィールドは自動的にグループ化され、クエリには SQL の GROUP BY 句が含まれます。 [グループ化と集計] ボックスの一覧では、[グループ化] オプションだけを使用することによって、集計を追加せずにデータを要約できます。 多くの集計には、DISTINCT キーワードを使用するバージョンが含まれています。 DISTINCT を含めることで値の重複を排除できます。

Microsoft SQL Server では Transact-SQL が、Microsoft SQL Server 2008 R2 並列データ ウェアハウスでは SQL が使用されます。 いずれの SQL 言語構文でも、クエリ デザイナーに用意されている句、キーワード、および集計がサポートされます。

Transact-SQL の詳細については、msdn.microsoft.com で、SQL Server オンライン ブックの「Transact-SQL リファレンス (データベース エンジン)」を参照してください。

次の表では、集計の一覧を示し、それらについて簡単に説明します。

集計

説明

Avg

グループ内の値の平均を返します。 SQL AVG 集計を実装します。

Count

グループ内のアイテム数を返します。 SQL COUNT 集計を実装します。

Count Big

グループ内のアイテム数を返します。 これは SQL COUNT_BIG 集計です。 COUNT と COUNT_BIG の違いは、COUNT_BIG が常に bigint データ型の値を返すという点です。

Min

グループ内の最小値を返します。 SQL MIN 集計を実装します。

Max

グループ内の最大値を返します。 SQL MAX 集計を実装します。

StDev

グループ内のすべての値の統計的標準偏差を返します。 SQL STDEV 集計を実装します。

StDevP

グループで指定された式のすべての値の母集団の統計的標準偏差を返します。 SQL STDEVP 集計を実装します。

Sum

グループ内のすべての値の合計を返します。 SQL SUM 集計を実装します。

Var

グループ内のすべての値の統計的変位を返します。 SQL VAR 集計を実装します。

VarP

グループ内のすべての値の母集団の統計的変位を返します。 SQL VARP 集計を実装します。

Avg Distinct

一意の平均値を返します。 AVG 集計と DISTINCT キーワードの組み合わせを実装します。

Count Distinct

一意の数を返します。 COUNT 集計と DISTINCT キーワードの組み合わせを実装します。

Count Big Distinct

グループ内のアイテムの一意の数を返します。 COUNT_BIG 集計と DISTINCT キーワードの組み合わせを実装します。

StDev Distinct

一意の統計的標準偏差を返します。 STDEV 集計と DISTINCT キーワードの組み合わせを実装します。

StDevP Distinct

重複を排除した統計的標準偏差を返します。 STDEVP 集計と DISTINCT キーワードの組み合わせを実装します。

Sum Distinct

一意の合計を返します。 SUM 集計と DISTINCT キーワードの組み合わせを実装します。

Var Distinct

一意の統計的変位を返します。 VAR 集計と DISTINCT キーワードの組み合わせを実装します。

VarP Distinct

一意の統計的変位を返します。 VARP 集計と DISTINCT キーワードの組み合わせを実装します。

関数のパラメーター ペイン

関数のパラメーター ペインには、ストアド プロシージャまたはテーブル値関数のパラメーターが表示されます。 次の列が表示されます。

  • **[パラメーター名]   **ストアド プロシージャまたはテーブル値関数で定義されるパラメーターの名前を表示します。

  • [値]   デザイン時にクエリを実行してクエリ結果ペインに表示されるデータを取得する際にパラメーターに使用される値。 この値は実行時には使用されません。

リレーションシップ ペイン

リレーションシップ ペインには、結合リレーションシップが表示されます。 リレーションシップは、データベース メタデータから取得された外部キー リレーションシップを基に自動的に検出したり、手動で作成したりできます。

次のオプションが表示されます。

  • **[自動検出]   **テーブル間のリレーションシップを自動的に作成する自動検出機能を切り替えます。 自動検出をオンにすると、クエリ デザイナーによって、テーブル内の外部キーからリレーションシップが作成されます。自動検出をオフにすると、リレーションシップを手動で作成する必要があります。 データベース ビュー ペインでテーブルを選択する際、自動検出によってリレーションシップが自動的に作成されます。 結合を手動で作成した後に自動検出をオンにすると、これらの結合は破棄されます。

    重要な注意事項重要

    SQL Server 2008 R2 並列データ ウェアハウス で使用する場合、結合の作成に必要なメタデータは提供されず、リレーションシップを自動的に検出できません。 SQL Server 2008 R2 並列データ ウェアハウス からデータを取得するクエリの場合は、すべてのテーブル結合を手動で作成する必要があります。

  • [リレーションシップの追加]   [リレーションシップ] ボックスの一覧にリレーションシップを追加します。

    自動検出がオンになっている場合、クエリで使用される列のテーブルが自動的に [リレーションシップ] ボックスの一覧に追加されます。 自動検出で 2 つのテーブルが関連付けられていることが特定されると、1 つのテーブルは [左テーブル] 列に、もう 1 つのテーブルは [右テーブル] 列に追加され、それらの間に内部結合が作成されます。 リレーションシップごとに、クエリ内に JOIN 句が生成されます。 テーブルが関連付けられていない場合、すべてのテーブルが [左テーブル] 列に表示され、[結合の種類] 列にテーブルが互いに関連付けられていないことが示されます。 自動検出がオンになっている場合、自動検出によって互いに関連付けられていないことが特定されたテーブル間にリレーションシップを手動で追加することはできません。

    自動検出がオフになっている場合は、テーブル間のリレーションシップを追加したり変更したりできます。 2 つのテーブルの結合に使用するフィールドを指定するには、[フィールドの編集] をクリックします。

    [リレーションシップ] ボックスの一覧にリレーションシップが表示される順序は、クエリで実行される結合の順序を表しています。 リレーションシップの順序を変更するには、一覧内でリレーションシップを上下に移動します。

    クエリで複数のリレーションシップを使用している場合、最初のリレーションシップを除いて、各リレーションシップ内のいずれか 1 つのテーブルが、前のリレーションシップ内で参照されている必要があります。

    あるリレーションシップ内の両方のテーブルが前方のリレーションシップによって参照されている場合、そのリレーションシップでは個別の結合句が生成されません。その代わり、前方のリレーションシップに対して生成された結合句に結合条件が追加されます。 結合の種類は、同じテーブルを参照している前方のリレーションシップによって推測されます。

  • **[フィールドの編集]   **テーブル間のリレーションシップの追加や変更を行う [関連フィールドの編集] ダイアログ ボックスが開きます。 結合する右テーブルおよび左テーブル内のフィールドが選択されています。 左テーブルおよび右テーブルの複数のフィールドを結合すると、リレーションシップ内で複数の結合条件を指定できます。 左右のテーブルを結合するフィールドは同じ名前でなくてもかまいません。 結合されるフィールドのデータ型は、互換性のあるデータ型である必要があります。

  • **[リレーションシップの削除] **  選択したリレーションシップを削除します。

  • [上へ移動] および [下へ移動]   [リレーションシップ] ボックスの一覧内のリレーションシップを上下に移動します。 クエリ内のリレーションシップの配置順によっては、クエリ結果に影響が出る場合があります。 リレーションシップがクエリに追加される順序は、[リレーションシップ] ボックスの一覧内でリレーションシップが表示される順序と同じです。

次の列が表示されます。

  • **[左テーブル]   **結合リレーションシップの一部である最初のテーブルの名前を表示します。

  • [結合の種類]   自動的に生成されるクエリで使用される SQL の JOIN ステートメントの種類を表示します。 既定では、外部キー制約が検出された場合は INNER JOIN が使用されます。 その他の結合の種類は LEFT JOIN または RIGHT JOIN です。 これらのいずれの結合の種類も該当しない場合は、[結合の種類] 列に [リレーションシップなし] と表示されます。 リレーションシップのないテーブルには CROSS JOIN 結合は作成されません。代わりに、左テーブルと右テーブル内の列を結合することでリレーションシップを手動で作成する必要があります。 JOIN の種類の詳細については、msdn.microsoft.com の SQL Serverオンライン ブックの「結合の基礎」を参照してください。

  • **[右テーブル]   **結合リレーションシップの 2 番目のテーブルの名前を表示します。

  • **[結合フィールド]   **結合されたフィールドのペアをコンマ (,) で区切った結合条件がリレーションシップに複数ある場合に、結合されたフィールドのペアを一覧表示します。

適用されたフィルター ペイン

適用されたフィルター ペインには、実行時に取得されるデータの行数を制限するために使用される条件が表示されます。 このペインで指定された条件を使用して SQL の WHERE 句が生成されます。 パラメーター オプションを選択すると、パラメーターが自動的に生成されます。

次の列が表示されます。

  • **[フィールド名]   **条件を適用するフィールドの名前を表示します。

  • **[演算子]   **フィルター式で使用する演算を表示します。

  • **[値]   **フィルター式で使用する値を表示します。

  • **[パラメーター]   **クエリ パラメーターをクエリに追加するオプションを表示します。

クエリ結果ペイン

クエリ結果ペインには、その他のペインの選択内容によって指定されている自動的に生成されたクエリの結果が表示されます。 結果セットの列は選択されたフィールド ペインで指定したフィールドで、行データは適用されたフィルター ペインで指定したフィルターによって制限されます。

このデータは、クエリの実行時にデータ ソースから取得された値を表します。

結果セットの並べ替え順序は、データがデータ ソースから取得された順序によって決まります。 並べ替え順序は、クエリ テキストを直接修正して変更できます。 クエリでの GROUP BY 句の使用の詳細については、「SQL Server 2008 オンライン ブック」の「GROUP BY (Transact-SQL)」を参照してください。

グラフィカル クエリ デザイナーのツール バー

グラフィカル クエリ デザイナーのツール バーにある次のボタンを使用すると、クエリを指定したりその結果を表示したりすることができます。

ボタン

説明

[テキストとして編集]

テキスト ベースのクエリ デザイナーに切り替えて、自動的に生成されたクエリの表示や変更を行います。

[インポート]

ファイルまたはレポートから既存のクエリをインポートします。 サポートされているファイルの種類は .sql と .rdl です。

[クエリの実行]

クエリを実行します。 クエリ結果ペインに結果セットが表示されます。

自動的に生成されたクエリについて

データベース ビュー ペインでテーブルおよび列またはストアド プロシージャおよびビューを選択すると、クエリ デザイナーによって基になる主キーと外部キーのリレーションシップがデータベース スキーマから取得されます。 クエリ デザイナーでは、これらのリレーションシップを分析することによって 2 つのテーブル間のリレーションシップが検出され、クエリに結合が追加されます。 その後、グループと集計の追加、リレーションシップの追加または変更、フィルターの追加を行うことでクエリを変更できます。 データの取得元である列を表示するクエリ テキスト、テーブル間の結合、グループまたは集計を参照するには、[テキストとして編集] をクリックします。

テキスト ベースのクエリ デザイナー

デザイン時に、データ ソースでサポートされているクエリ言語で特定のクエリを実行し、その結果を表示するには、テキスト ベースのクエリ デザイナーを使用します。 複数の SQL ステートメント、カスタム データ処理拡張機能のクエリまたはコマンド構文、および式としてのクエリを指定できます。

テキスト ベースのクエリ デザイナーはクエリを前処理しないため、あらゆる種類のクエリ構文に対応できます。 これは多くの種類のデータ ソースで既定のクエリ デザイナー ツールとなっています。

テキスト ベースのクエリ デザイナーでは、ツール バーと次の 2 つのペインが表示されます。

  • **[クエリ]   **クエリの種類に応じて、クエリ テキスト、テーブル名、またはストアド プロシージャ名が表示されます。 すべての種類のデータ ソースですべての種類のクエリが使用できるとは限りません。 たとえば、テーブル名はデータ ソースの種類が OLE DB の場合にのみサポートされます。

  • **[結果]   **デザイン時にクエリの実行結果が表示されます。

テキスト ベースのクエリ デザイナーのツール バー

テキスト ベースのクエリ デザイナーで使用できるツール バーは、コマンドの種類に関係なく 1 つだけです。 次の表は、ツール バーの各ボタンとその機能を示しています。

ボタン

説明

[テキストとして編集]

テキスト ベースのクエリ デザイナーと、グラフィカル クエリ デザイナー間で切り替えます。 すべての種類のデータ ソースでグラフィカル クエリ デザイナーがサポートされているとは限りません。

[インポート]

ファイルまたはレポートから既存のクエリをインポートします。 サポートされているファイルの種類は sql と rdl だけです。

クエリの実行

クエリを実行し、その結果セットを結果ペインに表示します。

[コマンドの種類]

[Text][StoredProcedure]、または [TableDirect] を選択します。 パラメーターを受け取るストアド プロシージャの場合、ツール バーの [実行] をクリックすると、[クエリ パラメーターの定義] ダイアログ ボックスが表示され、必要な値を入力できます。

注意

ストアド プロシージャから複数の結果セットが返された場合、最初の結果セットのみを使ってデータセットが設定されます。

注意

[TableDirect] は、データ ソースの種類が OLE DB の場合にのみ選択できます。

コマンドの種類 (Text)

SQL Server データセットを作成するとき、既定ではリレーショナル クエリ デザイナーが表示されます。 テキスト ベースのクエリ デザイナーに切り替えるには、ツール バーの [テキストとして編集] 切り替えボタンをクリックします。 テキスト ベースのクエリ デザイナーは、クエリ ペインと結果ペインの 2 つのペインで構成されています。 次の図に各ペインの名称を示します。

リレーショナル データのクエリに使用する汎用クエリ デザイナー

次の表に各ペインの機能を示します。

ペイン

機能

クエリ

SQL クエリ テキストを表示します。 SQL クエリを記述または編集する際に、このペインを使用します。

結果

クエリの結果を表示します。 クエリを実行するには、任意のペインで右クリックして、[実行] をクリックするか、ツール バーの [実行] ボタンをクリックします。

次のクエリでは、ContactType というテーブルから名前の一覧を取得します。

SELECT Name FROM ContactType

ツール バーの [実行] をクリックすると、クエリ ペインのコマンドが実行され、その結果 (名前の一覧) が結果ペインに表示されます。

コマンドの種類 (StoredProcedure)

[コマンドの種類][StoredProcedure] を選択した場合、テキスト ベースのクエリ デザイナーには、クエリ ペインと結果ペインの 2 つのペインが表示されます。 ストアド プロシージャ名をクエリ ペインに入力し、ツール バーの [実行] をクリックします。 ストアド プロシージャでパラメーターを使用する場合、[クエリ パラメーターの定義] ダイアログ ボックスが表示されます。 ストアド プロシージャのパラメーター値を入力します。

次の図に、ストアド プロシージャを実行したときのクエリ ペインと結果ペインを示します。 この場合、入力パラメーターは定数です。

テキスト ベースのクエリ デザイナーのストアド プロシージャ

次の表に各ペインの機能を示します。

ペイン

機能

[クエリ]

ストアド プロシージャの名前と入力パラメーターを表示します。

[結果]

クエリの結果を表示します。 クエリを実行するには、任意のペインで右クリックして、[実行] をクリックするか、ツール バーの [実行] ボタンをクリックします。

次のクエリでは、uspGetWhereUsedProductID というストアド プロシージャを呼び出します。 ストアド プロシージャに入力パラメーターがあるときは、クエリの実行時にパラメーター値を指定する必要があります。

uspGetWhereUsedProductID

[実行] (!) ボタンをクリックします。 次の表に、[クエリ パラメーターの定義] ダイアログ ボックスで値を指定する必要のある uspGetWhereUsedProductID のパラメーターの例を示します。

@StartProductID

820

@CheckDate

20010115

コマンドの種類 (TableDirect)

[コマンドの種類][TableDirect] を選択した場合、テキスト ベースのクエリ デザイナーには、クエリ ペインと結果ペインの 2 つのペインが表示されます。 テーブルを入力し、[実行] ボタンをクリックすると、そのテーブルのすべての列が返されます。

使用例

データ ソースの種類が OLE DB の場合、次のデータセット クエリでは、ContactType テーブルから、すべての種類の連絡先を結果セットとして取得します。

ContactType

テーブル名 ContactType を入力した場合、これは SQL ステートメントの SELECT * FROM ContactType を作成することに相当します。