Amazon Redshift でのレプリケートしたデータのクエリ - Amazon Redshift

Amazon Redshift でのレプリケートしたデータのクエリ

データをソースに追加すると、ほぼリアルタイムで Amazon Redshift データウェアハウスにレプリケートされ、クエリが実行できるようになります。統合メトリクスとテーブル統計の詳細については、ゼロ ETL 統合のメトリクス を参照してください。

注記

データベースは MySQL のスキーマと同じなので、MySQL データベースレベルは Amazon Redshift スキーマレベルにマッピングされます。Aurora MySQL または RDS for MySQL からレプリケートしたデータをクエリする場合は、このマッピングの違いに注意が必要です。

レプリケートされたデータをクエリするには
  1. Amazon Redshift コンソールに移動し、[クエリエディタ v2] を選択します。

  2. Amazon Redshift Serverless ワークグループまたは Amazon Redshift でプロビジョニングされたクラスターに接続して、ドロップダウンメニューからデータベースを選択します。

  3. SELECT ステートメントを使用して、ソースで作成したスキーマとテーブルからレプリケートされたデータをすべて選択します。大文字と小文字を区別するために、スキーマ名、テーブル名、列名を二重引用符 (" ") で囲みます。例:

    SELECT * FROM "schema_name"."table_name";

    Amazon Redshift CLI を使用してデータをクエリすることもできます。

レプリケートしたデータのマテリアライズドビューでのクエリ

ローカルの Amazon Redshift データベースにマテリアライズドビューを作成して、ゼロ ETL 統合でレプリケートしたデータを変換できます。ローカルデータベースに接続して、クロスデータベースクエリを使用して送信先データベースにアクセスします。3 つの部分で構成される表記の完全修飾オブジェクト名 (destination-database-name.schema-name.table-name) を使用するか、送信先データベースとスキーマのペアを参照する外部スキーマを作成して 2 つの部分で構成される表記 (external-schema-name.table-name) を使用できます。クロスデータベースのクエリの詳細については、「データベース間でのデータのクエリ」を参照してください。

次の例を使用してサンプルデータを作成し、ソースの tickit_zetl から sales_zetl テーブルと event_zetl テーブルにサンプルデータを挿入します。テーブルは Amazon Redshift データベースの zetl_int_db にレプリケートされます。

CREATE TABLE sales_zetl ( salesid integer NOT NULL primary key, eventid integer NOT NULL, pricepaid decimal(8, 2) ); CREATE TABLE event_zetl ( eventid integer NOT NULL PRIMARY KEY, eventname varchar(200) ); INSERT INTO sales_zetl VALUES(1, 1, 3.33); INSERT INTO sales_zetl VALUES(2, 2, 4.44); INSERT INTO sales_zetl VALUES(3, 2, 5.55); INSERT INTO event_zetl VALUES(1, "Event 1"); INSERT INTO event_zetl VALUES(2, "Event 2");

マテリアライズドビューを作成すると、次の 3 つの部分で構成される表記を使用してイベントごとの総売上高を取得できます。

--three part notation zetl-database-name.schema-name.table-name CREATE MATERIALIZED VIEW mv_transformed_sales_per_event_3p as (SELECT eventname, sum(pricepaid) as total_price FROM zetl_int_db.tickit_zetl.sales_zetl S, zetl_int_db.tickit_zetl.event_zetl E WHERE S.eventid = E.eventid GROUP BY 1);

マテリアライズドビューを作成すると、次の 2 つの部分で構成される表記を使用してイベントごとの総売上高を取得できます。

--two part notation external-schema-name.table-name notation CREATE EXTERNAL schema ext_tickit_zetl FROM REDSHIFT DATABASE zetl_int_db SCHEMA tickit_zetl; CREATE MATERIALIZED VIEW mv_transformed_sales_per_event_2p AS ( SELECT eventname, sum(pricepaid) as total_price FROM ext_tickit_zetl.sales_zetl S, ext_tickit_zetl.event_zetl E WHERE S.eventid = E.eventid GROUP BY 1 );

作成したマテリアライズドビューを表示するには、次の例を使用します。

SELECT * FROM mv_transformed_sales_per_event_3p; +-----------+-------------+ | eventname | total_price | +-----------+-------------+ | Event 1 | 3.33 | | Event 2 | 9.99 | +-----------+-------------+ SELECT * FROM mv_transformed_sales_per_event_2p; +-----------+-------------+ | eventname | total_price | +-----------+-------------+ | Event 1 | 3.33 | | Event 2 | 9.99 | +-----------+-------------+