以複寫的資料查詢和建立具體化視觀表 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

以複寫的資料查詢和建立具體化視觀表

在 Amazon Redshift 中查詢複寫的資料

在將資料新增到來源後,資料會近乎即時地複寫到 Amazon Redshift 資料倉儲,並且可供查詢。如需有關整合指標和表格統計資訊的資訊,請參閱零 ETL 整合的指標

注意

由於資料庫與 MySQL 中的結構描述相同,因此 MySQL 資料庫層級會映射至 Amazon Redshift 結構描述層級。當您查詢從 Amazon 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 整合所複寫的資料。請連線至本機資料庫,並使用跨資料庫查詢來存取目的地資料庫。您可以使用具有三部分符號 (destination-database-name.schema-name.table name) 的完整物件名稱,或建立參考目的地資料庫-結構描述配對的外部結構描述,並使用兩部分符號 (.table name)。external-schema-name如需跨資料庫查詢的相關資訊,請參閱跨資料庫查詢資料

使用下列範例,從來源 tickit_zetl 建立範例資料,並將其插入至 sales_zetlevent_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");

您可以使用由三個部分組成的標記法建立具體化視觀表,以取得每個活動的總銷售額:

--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);

您可以使用由兩個部分組成的標記法建立具體化視觀表,以取得每個活動的總銷售額:

--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 | +-----------+-------------+