Amazon Athena または Amazon Redshift でデータをクエリする - Amazon DataZone

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

Amazon Athena または Amazon Redshift でデータをクエリする

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

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

  2. Amazon DataZone データポータルで、プロジェクトリストを参照を選択し、分析するデータがあるプロジェクトを検索して選択します。

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

    このプロジェクトでデータウェアハウスの設計図が有効になっている場合、クエリエディタへのリンクがプロジェクトのホームページの右側パネルに表示されます。

    注記

    ブループリントは、プロジェクトが作成される環境プロファイルで定義されます。

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

Amazon Athena クエリエディタで、クエリを記述して実行します。一般的なタスクには、次のようなものがあります。

サブスクライブしたアセットのクエリと分析

プロジェクトがサブスクライブされているアセットへのアクセスが Amazon によって自動的に許可されない場合は DataZone、基盤となるデータへのアクセスを許可する必要があります。これらのアセットへのアクセスを許可する方法の詳細については、「」を参照してください承認済みサブスクリプションのアクセスをアンマネージドアセットに許可する

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

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

データベースドロップダウンには、次のデータベースが表示されます。

  • 発行データベース ({environmentname}_pub_db)。このデータベースの目的は、プロジェクトのコンテキスト内で新しいデータを生成し、このデータを Amazon DataZone カタログに公開できる環境を提供することです。プロジェクト所有者と寄稿者は、このデータベースへの読み取りおよび書き込みアクセス権を持っています。プロジェクトビューワーは、このデータベースへの読み取りアクセス権のみを持ちます。

  • サブスクリプションデータベース ({environmentname}_sub_db)。このデータベースの目的は、Amazon DataZone カタログでプロジェクトメンバーとしてサブスクライブしたデータを共有し、そのデータをクエリできるようにすることです。

新しいテーブルを作成する

外部 S3 バケットに接続している場合は、Amazon Athena を使用して、外部 Amazon S3 バケットのアセットをクエリおよび分析できます。このシナリオでは、Amazon には外部 Amazon S3 バケット内の基盤となるデータに直接アクセスを許可するアクセス許可 DataZone がなく、プロジェクト外で作成された外部 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のテーブルの場所」を参照してください。

外部 S3 バケットからクエリ結果 (CTAS) からテーブルを作成する

アセットをサブスクライブすると、基盤となるデータへのアクセスは読み取り専用になります。Amazon Athena を使用してテーブルのコピーを作成できます。Amazon Athena では、A CREATE TABLE AS SELECT (CTAS)クエリは別のクエリのSELECTステートメントの結果から Amazon Athena に新しいテーブルを作成します。CTAS 構文の詳細については、「CREATE TABLE AS 」を参照してください。

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

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 カタログに公開することで、他のユーザーが検出できるようにしたり、他の Amazon DataZone DataZone プロジェクトと共有したりできます。

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

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

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

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

  2. 認証にフェデレーティッドユーザーを選択します。

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

  4. [Create connection] (接続の作成) を選択します。

Amazon Redshift クラスターの場合:

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

  2. 認証に IAM ID を使用して一時的な認証情報を選択します。

  3. 上記の認証方法が利用できない場合は、左下隅にある歯車ボタンを選択してアカウント設定を開き、IAM 認証情報で認証を選択して保存します。これは設定です one-time-only。

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

  5. [Create connection] (接続の作成) を選択します。

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

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

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