データレイクのクエリ - Amazon Redshift

データレイクのクエリ

Amazon S3 データレイク内のデータをクエリすることができます。まず、AWS Glue Data Catalog内の外部データベースを参照する外部スキーマを作成します。作成後、Amazon S3 データレイク内のデータをクエリすることができます。

デモ: データレイクをクエリする

データレイクのクエリ方法を学ぶには、次の動画をご覧ください。

前提条件

クエリエディタ v2 でデータレイクの作業をする前に、お使いの Amazon Redshift 環境で以下が設定済みであることを確認してください。

  • AWS Glue を使用して Amazon S3 データをクローリングし、AWS Lake Formation のデータカタログを有効にします。

  • AWS Lake Formation に対して AWS Glue が有効化されているデータカタログを使用して、Amazon Redshift の IAM ロールを作成します。この手順の詳細については、「AWS Lake Formation に対し有効化されている AWS Glue Data Catalog を使用して、Amazon Redshift の IAM ロールを作成するには」を参照してください。Redshift Spectrum と Lake Formation の詳細については、「AWS Lake Formation で Redshift Spectrum を使用する」を参照してください。

  • Lake Formation データベースでクエリを実行するテーブルの SELECT 権限を付与します。この手順の詳細については、「Lake Formation データベースでクエリを実行するテーブルの SELECT 権限を付与するには」を参照してください。

    Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) の、[許可] セクションの、[データレイクの許可] ページで、IAM ロール、AWS Glue データベース、テーブルに適切な権限があることを確認できます。

  • 接続しているユーザーが、Amazon Redshift データベースにスキーマを作成してデータレイク内のデータにアクセスする権限を持っていることを確認します。クエリエディタ v2 でデータベースに接続するときは、データベースユーザーまたは IAM ユーザーなどの認証情報を含む認証方法を選択します。接続ユーザーには、superuser などの適切な権限とデータベース権限が必要です。クラスターまたはワークグループを作成した Amazon Redshift admin ユーザーには superuser 権限があり、スキーマを作成して Redshift データベースを管理できます。クエリエディタ v2 でデータベースに接続する方法の詳細については、Amazon Redshift データベースに接続する を参照してください。

外部スキーマの作成

Amazon S3 データレイク内のデータをクエリするには、まず外部スキーマを作成します。外部スキーマは、AWS Glue Data Catalog 内の外部データベースを参照します。

  1. クエリエディタ v2 の [エディタ] ビューで、Create[作成] を選択して、[スキーマ] を選択します。

  2. [スキーマ名] を入力します。

  3. [スキーマタイプ] では、[外部] を選択します。

  4. [データカタログ] 詳細内の [リージョン] は、デフォルトで Redshift データベースが置かれている AWS リージョン に設定されます。

  5. 外部スキーマのマッピング先で、AWS Glue テーブルへの参照を含むAWS Glue データベースを選択します。

  6. Amazon S3 上のデータをクエリするために必要な許可を持つ、Amazon Redshift 用 [IAM ロール]を選択します。

  7. オプションとして、データカタログへのアクセス許可を持つ [IAM ロール]を選択します。

  8. [スキーマの作成] を選択します。

    ツリービューパネルのデータベースの下にスキーマが表示されます。

スキーマの作成時に、データベースへのアクセスが拒否されたというエラーが表示された場合は、接続しているユーザーがスキーマを作成するためのデータベース権限を持っているかどうかを確認してください。

Amazon S3 データレイク内のデータのクエリ

前の手順で作成したスキーマを使用します。

  1. ツリービューパネルで、スキーマを選択します。

  2. テーブル定義を表示するには、テーブルを選択します。テーブルの列とデータ型が表示されます。

  3. テーブルをクエリするには、テーブルを選択して、右クリックでコンテキストメニューを表示し、[テーブルの選択] をクリックします。

  4. [エディタ]でクエリを実行します。

    次の SQL 例は、flightscsv という名前の AWS Glue テーブルのすべての行をクエリするためにクエリエディタ v2 で生成されました。出力の列と行は、単純にするために切り捨てられています。

    SELECT * FROM "dev"."mydatalake_schema"."flightscsv"; year quarter month dom day_of_week fl_date unique_carrier airline_id carrier tail_num fl_num 2016 4 10 19 3 10/19/16 OO 20304 OO N753SK 3086 2016 4 10 19 3 10/19/16 OO 20304 OO N753SK 3086 2016 4 10 19 3 10/19/16 OO 20304 OO N778SK 3087 2016 4 10 19 3 10/19/16 OO 20304 OO N778SK 3087 ...