

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon DataZone の Amazon Athena または Amazon Redshift でデータをクエリする
<a name="query-athena-with-deep-link-in-project"></a>

Amazon DataZone では、サブスクライバーがカタログ内のアセットにアクセスできると、Amazon Athena または Amazon Redshift Query Editor V2 を使用して、アセットを消費 (クエリと分析) できます。このタスクを完了するには、プロジェクト所有者またはコントロビューターである必要があります。プロジェクトで有効なブループリントに応じて、Amazon DataZone は、データポータルのプロジェクトページの右側ペインに Amazon Athena や Amazon Redshift Query Editor V2 へのリンクを提供します。

1. Amazon DataZone データポータル URL に移動し、シングルサインオン (SSO) または AWS 認証情報を使用してサインインします。Amazon DataZone 管理者の場合は、[https://console.aws.amazon.com/datazone](https://console.aws.amazon.com/datazone) で Amazon DataZone コンソールに移動し、ドメインが作成された AWS アカウント でサインインすると、**[データポータルを開く]** を選択できます。

1. Amazon DataZone データポータルで、**[プロジェクトを閲覧]**を選択し、分析するデータがあるプロジェクトを検索して選択します。

1. このプロジェクトでデータレイクブループリントが有効になっている場合、Amazon Athena へのリンクがプロジェクトのホームページの右側のサイドパネルに表示されます。

   このプロジェクトでデータウェアハウスブループリントが有効になっている場合、クエリエディタへのリンクがプロジェクトのホームページの右側のサイドパネルに表示されます。
**注記**  
ブループリントは、プロジェクトが作成される環境プロファイルで定義されます。

**Topics**
+ [Amazon Athena を使用してデータをクエリする](#query-athena-with-deep-link)
+ [Amazon Redshift を使用してデータをクエリする](#query-redshift-with-deep-link)

## Amazon Athena を使用してデータをクエリする
<a name="query-athena-with-deep-link"></a>

Amazon Athena リンクを選択し、認証にプロジェクトの認証情報を使用して、ブラウザの新しいタブで Amazon Athena クエリエディタを開きます。クエリエディタでは、作業中の Amazon DataZone プロジェクトが現在のワークグループとして自動的に選択されます。

Amazon Athena クエリエディタで、クエリを入力して実行します。一般的なタスクは以下のとおりです。
+ [サブスクライブしているアセットのクエリと分析](#query-analyze-subscribed-data)
+ [新しいテーブルを作成する](#create-new-tables)
+ [外部の S3 バケットからのクエリ結果からテーブルを作成する (CTAS)](#create-tables-external-s3-bucket)

### サブスクライブしているアセットのクエリと分析
<a name="query-analyze-subscribed-data"></a>

プロジェクトがサブスクライブしているアセットへのアクセス権が Amazon DataZone によって自動的に付与されない場合は、基になるデータへのアクセスする権の承認が必要です。これらのアセットへのアクセス権を付与する方法の詳細については、「[Amazon DataZone のアンマネージドアセットへの承認済みサブスクリプションへのアクセス許可を付与する](grant-access-to-unmanaged-asset.md)」を参照してください。

プロジェクトがサブスクライブしているアセットへのアクセス権が [Amazon DataZone によって自動的に付与](grant-access-to-glue-asset.md)される場合は、テーブルで SQL クエリを実行し、Amazon Athena で結果を確認できます。Amazon Athena で SQL を使用方法の詳細については、「[Athena の SQL リファレンス](grant-access-to-glue-asset)」を参照してください。

プロジェクトのホームページにある右側のサイドパネルで Amazon Athena リンクを選択した後、Amazon Athena クエリエディタに移動すると、Amazon Athena クエリエディタの右上隅に **[プロジェクト]** ドロップダウンが表示され、プロジェクトのコンテキストが自動的に選択されます。

**[データベース]** ドロップダウンには、以下のデータベースが表示されます。
+ 公開データベース (`{environmentname}_pub_db`)。このデータベースの目的は、プロジェクトのコンテキスト内で新しいデータを生成し、そのデータを Amazon DataZone カタログに公開できる環境を提供することです。プロジェクトの所有者とコントロビューターは、このデータベースへの読み取りおよび書き込みアクセス権を保有しています。プロジェクトビューワーは、このデータベースへの読み取りアクセス許可のみ保有しています。
+ サブスクリプションデータベース (`{environmentname}_sub_db`)。このデータベースの目的は、Amazon DataZone カタログでプロジェクトメンバーとしてサブスクライブしているデータを共有し、そのデータをクエリできるようにすることです。

### 新しいテーブルを作成する
<a name="create-new-tables"></a>

外部 S3 バケットに接続している場合は、Amazon Athena を使用して、外部 Amazon S3 バケットからアセットをクエリおよび分析できます。このシナリオでは、Amazon DataZone には、外部 Amazon S3 バケット内の基元になるデータへの直接アクセス権を付与するアクセス許可はなく、プロジェクト外で作成された外部 Amazon S3 データは Lake Formation で自動的に管理されず、Amazon DataZone によって管理することはできません。別の方法として、Amazon Athena の `CREATE TABLE` ステートメントを使用して、外部の Amazon S3 バケットからプロジェクトの Amazon S3 バケット内の新しいテーブルにデータをコピーすることもできます。Amazon Athena で `CREATE TABLE` クエリを実行する場合は、 AWS Glue Data Catalogにテーブルを登録します。

次の例に示すように、Amazon S3 内のデータへのパスを指定するには、`LOCATION` プロパティを使用します。

```
CREATE EXTERNAL TABLE 'test_table'(
...
)
ROW FORMAT ...
STORED AS INPUTFORMAT ...
OUTPUTFORMAT ...
LOCATION 's3://bucketname/folder/'
```

詳細については、「[Amazon S3 のテーブルの場所](https://docs.aws.amazon.com/athena/latest/ug/tables-location-format.html)」を参照してください。

### 外部の S3 バケットからのクエリ結果からテーブルを作成する (CTAS)
<a name="create-tables-external-s3-bucket"></a>

アセットをサブスクライブすると、基盤となるデータへのアクセス権は読み取り専用になります。Amazon Athena を使用して、テーブルのコピーを作成できます。Amazon Athena では、`A CREATE TABLE AS SELECT (CTAS)` クエリは、別のクエリからの `SELECT` ステートメントの結果から、Amazon Athena に新しいテーブルを作成します。CTAS 構文については、「[CREATE TABLE AS](https://docs.aws.amazon.com/athena/latest/ug/create-table-as.html)」を参照してください。

次の例では、テーブルのすべての列をコピーしてテーブルを作成します。

```
CREATE TABLE new_table AS
SELECT *
FROM old_table;
```

同じ例の次のバリエーションでは、`SELECT` ステートメントに `WHERE` 句も含まれます。この場合、クエリはテーブルから、`WHERE` 句を満たす行のみを選択します。

```
CREATE TABLE new_table AS
SELECT *
FROM old_table WHERE condition;
```

次の例では、別のテーブルからの列のセットで実行される新しいクエリが作成されます。

```
CREATE TABLE new_table AS
SELECT column_1, column_2, ... column_n
FROM old_table;
```

同じ例のこのバリエーションでは、複数のテーブルの特定の列から新しいテーブルを作成します。

```
CREATE TABLE new_table AS
SELECT column_1, column_2, ... column_n
FROM old_table_1, old_table_2, ... old_table_n;
```

これらの新しく作成されたテーブルは、プロジェクトの AWS Glue データベースの一部になりました。データをアセットとして Amazon DataZone カタログに公開することで、他のユーザーが検出したり、他の Amazon DataZone プロジェクトと共有したりできます。

## Amazon Redshift を使用してデータをクエリする
<a name="query-redshift-with-deep-link"></a>

Amazon DataZone データポータルで、データウェアハウスのブループリントを使用する環境を開きます。環境ページの右側のパネルにある **Amazon Redshift** リンクを選択します。これにより、Amazon Redshift Query Editor V2.0 で環境の Amazon Redshift クラスターまたは Amazon Redshift Serverless ワークグループへの接続を確立するのに役立つ、必要な詳細を含む確認ダイアログが開きます。接続を確立するために必要な詳細を特定したら、**[Amazon Redshift を開く]** ボタンを選択します。これにより、Amazon DataZone 環境の一時的な認証情報を使用して、ブラウザの新しいタブで Amazon Redshift Query Editor V2.0 が開きます。

クエリエディタで、環境が Amazon Redshift Serverless ワークグループを使用しているか、Amazon Redshift クラスターを使用しているかに応じて、以下の手順に従います。

Amazon Redshift Serverless ワークグループの場合:

1. クエリエディタで、Amazon DataZone 環境の Amazon Redshift Serverless ワークグループを特定し、右クリックして **[接続を作成]** を選択します。

1. 認証に **[フェデレーションユーザー]** を選択します。

1. Amazon DataZone 環境のデータベースの名前を指定します。

1. **[接続を作成]** を選択します。

Amazon Redshift クラスターの場合:

1. クエリエディタで、Amazon DataZone 環境の Amazon Redshift クラスターを特定し、右クリックして **[接続を作成]** を選択します。

1. 認証に **[IAM アイデンティティを使用する一時的な認証情報]** を選択します。

1. 上記の認証方法が利用できない場合は、左下隅の歯車ボタンを選択して **[アカウント設定]** を開き、**[IAM 認証情報で認証]** を選択して保存します。これは 1 回限りの設定です。

1. 接続を作成する Amazon DataZone 環境のデータベースの名前を指定します。

1. **[接続を作成]** を選択します。

これで、Amazon DataZone 環境に設定された Amazon Redshift クラスターまたは Amazon Redshift Serverless ワークグループ内のテーブルとビューに対するクエリを開始できます。

サブスクライブしている Amazon Redshift テーブルまたはビューは、環境に設定された Amazon Redshift クラスターまたは Amazon Redshift Serverless ワークグループにリンクされます。テーブルとビューをサブスクライブしたり、環境のクラスターまたはデータベースに作成した新しいテーブルとビューを公開したりできます。

例えば、環境が `redshift-cluster-1` という Amazon Redshift クラスターと、そのクラスター内の `dev` というデータベースにリンクされているシナリオを考えてみましょう。Amazon DataZone データポータルを使用して、環境に追加されるテーブルとビューをクエリできます。データポータルの右側のサイドペインにある [`Analytics tools`] セクションで、この環境の Amazon Redshift リンクを選択すると、クエリエディタが開きます。その後、`redshift-cluster-1` クラスターを右クリックし、**[IAM ID を使用した一時的な認証情報]** を使用して接続を作成できます。接続が確立されると、環境がアクセスできるすべてのテーブルとビューが **dev** データベースに表示されます。