

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の 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 スキーマレベルにマッピングされます。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 統合でレプリケートしたデータを変換できます。ローカルデータベースに接続して、クロスデータベースクエリを使用して送信先データベースにアクセスします。3 つの部分で構成される表記の完全修飾オブジェクト名 (destination-database-name.schema-name.table-name) を使用するか、送信先データベースとスキーマのペアを参照する外部スキーマを作成して 2 つの部分で構成される表記 (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");
```

マテリアライズドビューを作成すると、次の 3 つの部分で構成される表記を使用してイベントごとの総売上高を取得できます。

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

マテリアライズドビューを作成すると、次の 2 つの部分で構成される表記を使用してイベントごとの総売上高を取得できます。

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