

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# 在 Amazon Redshift 中查詢複寫的資料
<a name="zero-etl-using.querying-and-creating-materialized-views"></a>

在將資料新增到來源後，資料會近乎即時地複寫到 Amazon Redshift 資料倉儲，並且可供查詢。如需有關整合指標和表格統計資訊的資訊，請參閱[零 ETL 整合的指標](zero-etl-using.metrics.md)。

**注意**  
由於資料庫與 MySQL 中的結構描述相同，因此 MySQL 資料庫層級會映射至 Amazon Redshift 結構描述層級。當您查詢從 Amazon Aurora MySQL 或 RDS for MySQL 複寫過來的資料時，請注意這個映射上的差異。

**查詢複寫的資料**

1. 導覽至 Amazon Redshift 主控台，然後選擇**查詢編輯器 v2**。

1. 連線至您的 Amazon Redshift Serverless 工作群組或 Amazon Redshift 佈建叢集，然後從下拉式清單中選擇您的資料庫。

1. 使用 SELECT 陳述式從您在來源中建立的結構描述和資料表選取所有資料：如需區分大小寫，請針對結構描述、資料表和資料欄名稱使用雙引號 (" ")。例如：

   ```
   SELECT * FROM "schema_name"."table_name";
   ```

   您也可以使用 Amazon Redshift Data API 來查詢資料。

## 透過具體化視觀表查詢複寫的資料
<a name="zero-etl-using.transforming"></a>

您可以在本機 Amazon Redshift 資料庫中建立具體化視觀表，以轉換透過零 ETL 整合所複寫的資料。請連線至本機資料庫，並使用跨資料庫查詢來存取目的地資料庫。您可以使用由三個部分組成的標記法 (destination-database-name.schema-name.table-name) 所表示的完整物件名稱，或建立參考目的地資料庫結構描述配對的外部結構描述，並使用由兩個部分組成的標記法 (external-schema-name.table-name)。如需跨資料庫查詢的相關資訊，請參閱[跨資料庫查詢資料](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html)。

使用下列範例，從來源 *tickit\$1zetl* 建立範例資料，並將其插入至 *sales\$1zetl* 和 *event\$1zetl* 資料表。這兩個資料表會複寫到 Amazon Redshift 資料庫 *zetl\$1int\$1db*。

```
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 複寫的資料
<a name="zero-etl-using.querying-ddb"></a>

當您將資料從 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;
```