Limites - Amazon Redshift

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.

Limites

Avec Amazon Redshift, vous pouvez utiliser le type de SUPER données pour stocker et interroger des données semi-structurées telles JSON qu'Avro ou Ion. Les limites relatives aux types de SUPER données font référence aux contraintes et aux limites associées à l'utilisation de ce type de données dans Amazon Redshift. Les sections suivantes fournissent des détails sur les limites spécifiques du type de SUPER données, telles que la taille maximale, les niveaux d'imbrication et les types de données pris en charge dans les données semi-structurées.

  • Vous ne pouvez pas définir de SUPER colonnes comme clé de distribution ou de tri.

  • Un SUPER objet individuel peut contenir jusqu'à 16 Mo de données.

  • Une valeur individuelle au sein d'un SUPER objet est limitée à la longueur maximale du type Amazon Redshift correspondant. Par exemple, une valeur de chaîne unique chargée SUPER est limitée à une VARCHAR longueur maximale de 65535 octets.

  • Vous ne pouvez pas effectuer d'opérations de mise à jour ou de transformation partielles sur SUPER des colonnes.

  • Vous ne pouvez pas utiliser le type de SUPER données et son alias dans les jointures droites ou les jointures externes complètes.

  • Le type de SUPER données n'est pas pris en charge XML en tant que format de sérialisation entrant ou sortant.

  • Dans la FROM clause d'une sous-requête (corrélée ou non) qui fait référence à une variable de table à dénicher, la requête ne peut faire référence qu'à sa table parent et non à d'autres tables.

  • Limites de transtypage (casting)

    SUPERles valeurs peuvent être converties vers et depuis d'autres types de données, avec les exceptions suivantes :

    • Amazon Redshift ne différencie pas les entiers et les décimales d’échelle 0.

    • Si l'échelle n'est pas nulle, le type de SUPER données a le même comportement que les autres types de données Amazon Redshift, sauf qu'Amazon Redshift SUPER convertit les erreurs associées en valeurs nulles, comme indiqué dans l'exemple suivant.

      SELECT 5::bool; bool ------- True (1 row) SELECT 5::decimal::bool; ERROR: cannot cast type numeric to boolean SELECT 5::super::bool; bool ------- True (1 row) SELECT 5.0::bool; ERROR: cannot cast type numeric to boolean SELECT 5.0::super::bool; bool ------- (1 row)
    • Amazon Redshift ne convertit pas les types de date et d'heure en type de SUPER données. Amazon Redshift peut uniquement convertir les types de données de date et d'heure à partir du type de SUPER données, comme illustré dans l'exemple suivant.

      SELECT o.o_orderdate FROM customer_orders_lineitem c,c.c_orders o; order_date ------------------ "2001-09-08" (1 row) SELECT JSON_TYPEOF(o.o_orderdate) FROM customer_orders_lineitem c,c.c_orders o; json_typeof ----------------- string (1 row) SELECT o.o_orderdate::date FROM customer_orders_lineitem c,c.c_orders o; order_date ---------------- 2001-09-08 (1 row) --date/time cannot be cast to super SELECT '2019-09-09'::date::super; ERROR: cannot cast type date to super
    • Convertissez des valeurs non scalaires (objet et tableau) en chaînes renvoyées. NULL Pour sérialiser correctement ces valeurs non scalaires, ne les convertissez pas. Utilisez plutôt json_serialize pour convertir les valeurs non scalaires. La fonction json_serialize renvoie un varchar. En règle générale, vous n’avez pas besoin de convertir les valeurs non scalaires en varchar car Amazon Redshift sérialise implicitement, comme le montre le premier exemple suivant.

      SELECT r_nations FROM region_nations WHERE r_regionkey=300; r_nations ---------------- [1,"abc",null] (1 row) SELECT r_nations::varchar FROM region_nations WHERE r_regionkey=300; r_nations ------------- (1 row) SELECT JSON_SERIALIZE(r_nations) FROM region_nations WHERE r_regionkey=300; json_serialize ----------------- [1,"abc",null] (1 row)
    • Pour les bases de données qui ne distinguent pas les majuscules et minuscules, Amazon Redshift ne prend pas en charge SUPER ce type de données. Pour les colonnes ne distinguant pas les majuscules et minuscules, Amazon Redshift ne les convertit pas selon le type. SUPER Amazon Redshift ne prend donc pas en charge les colonnes qui interagissent avec des SUPER colonnes ne distinguant pas les majuscules des minuscules qui déclenchent le casting.

  • Amazon Redshift ne prend pas en charge les fonctions volatiles, telles que RANDOM () ou TIMEOFDAY (), dans les sous-requêtes qui perturbent une table externe ou le côté gauche (LHS) des fonctions IN comportant de telles sous-requêtes.