Types de données pris en charge avec les tables Apache Iceberg - Amazon Redshift

Amazon Redshift ne prendra plus en charge la création de nouveaux Python à UDFs partir du patch 198. UDFs Le Python existant continuera de fonctionner jusqu'au 30 juin 2026. Pour plus d’informations, consultez le billet de blog .

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Types de données pris en charge avec les tables Apache Iceberg

Cette rubrique décrit les types de données pris en charge que Redshift Spectrum peut lire à partir de tables au format Apache Iceberg.

Amazon Redshift peut interroger les tables Iceberg qui contiennent les types de données suivants :

binary boolean date decimal double float int list long map string struct timestamp without time zone

Lorsque vous créez et définissez une table Iceberg, utilisez les noms des types de données Amazon Redshift dans l'instruction SQL. Redshift les met automatiquement en correspondance avec les types d'icebergs correspondants. Pour en savoir plus sur les types de données Iceberg, consultez Schemas for Iceberg dans la documentation Apache Iceberg.

Lors de la lecture des tables Iceberg, les types de données Iceberg sont mappés dans les types de données Redshift, comme indiqué dans le tableau ci-dessous :

Type Iceberg Type Amazon Redshift Remarques
boolean boolean -
- tinyint Non pris en charge pour les tables Iceberg.
- smallint Non pris en charge pour les tables Iceberg.
int int -
long bigint -
double double precision -
float real -
decimal(P, S) decimal(P, S) P est la précision, S est l’échelle.
- char Non pris en charge pour les tables Iceberg.
string varchar(16384) Les chaînes dont la taille est supérieure à 16384 sont tronquées à 16384.
binary varbyte(64000) -
date date -
time - -
timestamp timestamp -
timestamptz timestampz -
list<E> SUPER -
map<K,V> SUPER -
struct<...> SUPER -
fixed(L) - Le type fixed(L) n’est actuellement pas pris en charge dans Redshift Spectrum.
uuid - Le type uuid n’est actuellement pas pris en charge dans Redshift Spectrum.
variant - Amazon Redshift ne prend pas en charge Iceberg V3.
geometry - Amazon Redshift ne prend pas en charge Iceberg V3.
geography - Amazon Redshift ne prend pas en charge Iceberg V3.
timestamp_ns - Amazon Redshift ne prend pas en charge Iceberg V3.
timestamptz_ns - Amazon Redshift ne prend pas en charge Iceberg V3.
Unknown - Amazon Redshift ne prend pas en charge Iceberg V3.

Les types de données suivants sont pris en charge lors de la création de tables Iceberg à partir de Redshift. Les types de données Redshift sont mappés dans les types de données Iceberg, comme indiqué dans le tableau suivant.

Type Amazon Redshift Alias Amazon Redshift Type Iceberg Remarques
integer int, int4 int -
bigint int8 long -
decimal numeric decimal(p,S) -
real float4 float -
double precision float8, float double -
varchar charactter varying,nvarchar, text string Le type de varchar(n) données n'est pas pris en charge lors de la création d'une table Iceberg.
date - date -
timestamp - timestamp -
timestamptz - timestamptz -
boolean - boolean -

Lorsque vous écrivez dans des tables Iceberg, outre les types de données mentionnés dans le tableau précédent, certains types de données sources sont promus vers leurs types Iceberg compatibles, comme indiqué dans le tableau suivant.

Type Amazon Redshift Type Iceberg

tinyint

int

smallint

int

varchar(n)

string

Toute tentative d'utilisation de types de données non pris en charge entraînera des erreurs de syntaxe. Lorsque vous créez une table Iceberg avec CREATE TABLE AS SELECT clause, vous pouvez ajouter un casting explicite pour contourner la différence de type.

Supposons, par exemple, que vous disposiez d'une table Redshift RMS avec le schéma suivant :

CREATE TABLE rms_t (c1 int, c2 char(20));

Si vous souhaitez créer une table Iceberg en utilisant rms_t comme source, vous avez besoin d'un casting explicite pour la c2 colonne, car le varchar(n) type n'est pas pris en charge :

CREATE TABLE ext_schema.iceberg_t AS SELECT c1, c2::varchar FROM rms_t;

Pour en savoir plus sur les types de données Amazon Redshift, consultez Types de données.