データレイクのクエリ
このチュートリアルの一連のタスクに従って、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 Redshiftadmin
ユーザーにはsuperuser
権限があり、スキーマを作成して Redshift データベースを管理できます。クエリエディタ v2 でデータベースに接続する方法の詳細については、「Amazon Redshift データベースに接続する」を参照してください。
外部スキーマの作成
Amazon S3 データレイク内のデータをクエリするには、まず外部スキーマを作成します。外部スキーマは、AWS Glue Data Catalog内の外部データベースを参照します。
クエリエディタ v2 の [エディタ] ビューで、
[作成] を選択して、[スキーマ] を選択します。
[スキーマ名] を入力します。
[スキーマタイプ] では、[外部] を選択します。
[データカタログ] 詳細内の [リージョン] は、デフォルトで Redshift データベースが置かれている AWS リージョン に設定されます。
外部スキーマのマッピング先で、AWS Glue テーブルへの参照を含む AWS Glue データベースを選択します。
Amazon S3 上のデータをクエリするために必要な許可を持つ、Amazon Redshift 用 [IAM ロール]を選択します。
オプションとして、データカタログへのアクセス許可を持つ IAM ロールを選択します。
[スキーマの作成] を選択します。
ツリービューパネルのデータベースの下にスキーマが表示されます。
スキーマの作成時に、データベースへのアクセスが拒否されたというエラーが表示された場合は、接続しているユーザーがスキーマを作成するためのデータベース権限を持っているかどうかを確認してください。
Amazon S3 データレイク内のデータのクエリ
前の手順で作成したスキーマを使用します。
ツリービューパネルで、スキーマを選択します。
テーブル定義を表示するには、テーブルを選択します。テーブルの列とデータ型が表示されます。
テーブルをクエリするには、テーブルを選択して、右クリックでコンテキストメニューを表示し、[テーブルの選択] をクリックします。
[エディタ] でクエリを実行します。
次の 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 ...