

 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="r_create_scalar"></a>

SUPER に保存されているスキーマレスデータは、Amazon Redshift のパフォーマンスに影響を与える可能性があります。例えば、範囲が制限されたスキャンではゾーンマップを効果的に使用できないため、述語や結合条件をフィルタリングします。ユーザーと BI ツールは、データの従来の表示としてマテリアライズドビューを使用し、分析クエリのパフォーマンスを向上させることができます。

次のクエリは、マテリアライズドビュー `super_mv` をスキャンし、`o_orderstatus` でフィルタリングします。

```
SELECT c.c_name, v.o_totalprice
FROM customer_orders_lineitem c
JOIN super_mv v ON c.c_custkey = v.c_custkey
WHERE v.o_orderstatus = 'F';
```

`stl_scan` を調べて、Amazon Redshift が `o_orderstatus` の範囲制限スキャンでゾーンマップを効果的に使用できないことを確認します。

```
SELECT slice, is_rrscan FROM stl_scan
WHERE query = pg_last_query_id() AND perm_table_name LIKE '%super_mv%';

 slice | is_rrscan 
-------+-----------
     0 | f
     1 | f
     5 | f
     4 | f
     2 | f
     3 | f
(6 rows)
```

次の例では、マテリアライズドビュー `super_mv` を使用して、細断されたデータからスカラー列を作成します。この場合、Amazon Redshift は `o_orderstatus` を SUPER から VARCHAR にキャストします。さらに、`super_mv` のソートキーとして `o_orderstatus` を指定します。

```
CREATE MATERIALIZED VIEW super_mv distkey(c_custkey) sortkey(c_custkey, o_orderstatus) AS (
  SELECT c_custkey, o.o_orderstatus::VARCHAR AS o_orderstatus, o.o_totalprice, o_idx
  FROM customer_orders_lineitem c, c.c_orders o AT o_idx
);
```

クエリを再実行した後、Amazon Redshift がゾーンマップを使用できることを確認します。

```
SELECT v.o_totalprice
FROM super_mv v
WHERE v.o_orderstatus = 'F';
```

次のように、範囲が制限されたスキャンでゾーンマップが使用されるようになったことを確認できます。

```
SELECT slice, is_rrscan FROM stl_scan
WHERE query = pg_last_query_id() AND perm_table_name LIKE '%super_mv%';

 slice | is_rrscan 
-------+-----------
     0 | t
     1 | t
     2 | t
     3 | t
     4 | t
     5 | t
(6 rows)
```