使用复制的数据查询和创建实体化视图 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用复制的数据查询和创建实体化视图

在 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 集成复制的数据。连接到您的本地数据库,并使用跨数据库查询来访问目标数据库。您可以使用完全限定对象名称(采用三部分表示法,即:目标数据库名称.架构名称.表名称),也可以创建引用目标数据库架构对(使用两部分表示法,即:外部架构名称.表名称)。有关跨数据库查询的更多信息,请参阅跨数据库查询数据

使用以下示例,从源 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 | +-----------+-------------+