在 Amazon Redshift 中查询复制的数据
将数据添加到源后,这些数据将近乎实时地复制到 Amazon Redshift 数据仓库中,随时可供查询。有关集成指标和表统计信息的信息,请参阅零 ETL 集成的指标。
注意
由于数据库与 MySQL 中的架构相同,因此 MySQL 数据库级别映射到 Amazon Redshift 架构级别。当您查询从 Aurora MySQL 或 RDS for MySQL 复制的数据时,请注意这种映射差异。
查询复制的数据
-
导航到 Amazon Redshift 控制台并选择查询编辑器 v2。
-
连接到您的 Amazon Redshift Serverless 工作组或 Amazon Redshift 预置集群,然后从下拉菜单中选择您的数据库。
-
使用 SELECT 语句,选择从您在源中创建的架构和表中复制的所有数据。为了区分大小写,请对架构、表和列名使用双引号 (" ")。例如:
SELECT * FROM "
schema_name
"."table_name
";您也可以使用 Amazon Redshift 数据 API 查询数据。
使用实体化视图查询复制的数据
您可以在本地 Amazon Redshift 数据库中创建实体化视图,以转换通过零 ETL 集成复制的数据。连接到您的本地数据库,并使用跨数据库查询来访问目标数据库。您可以使用完全限定对象名称(采用三部分表示法,即:目标数据库名称.架构名称.表名称),也可以创建引用目标数据库架构对(使用两部分表示法,即:外部架构名称.表名称)。有关跨数据库查询的更多信息,请参阅跨数据库查询数据。
使用以下示例,从源 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 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 | +-----------+-------------+
从 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 NO AS SELECT "value"."payload"."L"[0]."S"::VARCHAR AS first_payload FROM public.sales;
要查看实体化视图中的数据,请运行 SQL 命令。
SELECT first_payload FROM mv_sales;