本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon Redshift 中查詢複寫的資料
在將資料新增到來源後,資料會近乎即時地複寫到 Amazon Redshift 資料倉儲,並且可供查詢。如需有關整合指標和表格統計資訊的資訊,請參閱零 ETL 整合的指標。
注意
由於資料庫與 MySQL 中的結構描述相同,因此 MySQL 資料庫層級會映射至 Amazon Redshift 結構描述層級。當您查詢從 Amazon Aurora MySQL 或 RDS for MySQL 複寫過來的資料時,請注意這個映射上的差異。
查詢複寫的資料
-
導覽至 Amazon Redshift 主控台,然後選擇查詢編輯器 v2。
-
連線至您的 Amazon Redshift Serverless 工作群組或 Amazon Redshift 佈建叢集,然後從下拉式清單中選擇您的資料庫。
-
使用 SELECT 陳述式從您在來源中建立的結構描述和資料表選取所有資料:如需區分大小寫,請針對結構描述、資料表和資料欄名稱使用雙引號 (" ")。例如:
SELECT * FROM "
schema_name
"."table_name
";您也可以使用 Amazon Redshift Data API 查詢資料。
使用具體化視觀表查詢複寫的資料
您可以在本機 Amazon Redshift 資料庫中建立具體化視觀表,以轉換透過零 ETL 整合所複寫的資料。請連線至本機資料庫,並使用跨資料庫查詢來存取目的地資料庫。您可以使用由三個部分組成的標記法 (destination-database-name.schema-name.table-name) 所表示的完整物件名稱,或建立參考目的地資料庫結構描述配對的外部結構描述,並使用由兩個部分組成的標記法 (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");
您可以使用由三個部分組成的標記法建立具體化視觀表,以取得每個活動的總銷售額:
--three part notation zetl-database-name.schema-name.table-name CREATE MATERIALIZED VIEW mv_transformed_sales_per_event_3p AUTO REFRESH YES 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 AUTO REFRESH YES 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 | +-----------+-------------+
從 DynamoDB 查詢複寫資料
當您將資料從 Amazon DynamoDB 複寫到 Amazon Redshift 資料庫時,資料會存放在 SUPER 資料類型欄中的具體化檢視中。
在此範例中,下列資料存放在 DynamoDB 中。
{ "key1": { "S": "key_1" }, "key2": { "N": 0 }, "payload": { "L": [ { "S": "sale1" }, { "S": "sale2" }, ] }, }
Amazon Redshift 具體化檢視的定義如下。
CREATE MATERIALIZED VIEW mv_sales BACKUP NO AUTO REFRESH YES AS SELECT "value"."payload"."L"[0]."S"::VARCHAR AS first_payload FROM public.sales;
若要檢視具體化檢視中的資料,請執行 SQL 命令。
SELECT first_payload FROM mv_sales;