Limitations connues relatives aux tables dynamiques

Ce chapitre décrit les limitations des fonctions de table dynamique suivantes :

Limitations générales

Les limitations générales suivantes s’appliquent à l’utilisation des tables dynamiques :

  • Un seul compte peut contenir un maximum de 1 000 tables dynamiques.

  • Dans la définition d’une table dynamique :

    • Vous ne pouvez pas interroger plus de 100 tables.

    • Vous ne pouvez pas interroger plus de 10 tables dynamiques.

    • Vous ne pouvez pas chaîner plus de 10 tables dynamiques pour créer un DAG.

  • Vous ne pouvez pas tronquer les données d’une table dynamique.

  • Vous ne pouvez pas créer de table dynamique transitoire ou temporaire.

  • Lorsque vous utilisez une table dynamique pour intégrer des données partagées, la requête ne peut pas effectuer de sélection à partir d’une table dynamique partagée ou d’une vue sécurisée partagée faisant référence à une table dynamique en amont.

  • Vous ne pouvez pas utiliser de rôles secondaires avec les tables dynamiques, car les actualisations des tables dynamiques jouent le rôle de leur propriétaire. Pour plus d’informations, voir Modèle d’application avec rôle principal et rôles secondaires.

Limitations des constructions de requête

Les constructions suivantes ne sont actuellement pas prises en charge dans la requête pour une table dynamique. Si vous les indiquez dans la requête, il se produit une erreur :

  • Des fonctions externes.

  • Des fonctions qui s’appuient sur CURRENT_USER. Les actualisations des tables dynamiques jouent le rôle de leur propriétaire avec un utilisateur SYSTEM spécial.

  • Des sources qui incluent des tables de répertoire, des tables Iceberg, des tables externes, des flux et des vues matérialisées.

  • Vues sur des tables dynamiques ou d’autres objets non pris en charge.

  • Des fonctions définies par l’utilisateur (UDFs et UDTFs) écrites en SQL.

Prise en charge des interactions inter-fonctionnalités

Les interactions inter-fonctionnalités suivantes ne sont pas prises en charge :

  • Définition de clés de clustering sur une table dynamique.

  • Activation de l’optimisation de la recherche sur une table dynamique.

  • Utilisation du Query Acceleration Service (QAS) pour l’actualisation des tables dynamiques.

  • Utilisation de tables dynamiques dans des schémas d’accès gérés.

Les limitations suivantes s’appliquent aux interactions inter-fonctionnalités :

  • Les tables dynamiques et les tables de base qui se trouvent dans des groupes de basculement différents entraînent l’échec de la réplication.

Prise en charge de l’actualisation incrémentielle

Cette section décrit les expressions, les clauses et les fonctions qui ne sont actuellement pas prises en charge pour l”actualisation incrémentielle des tables dynamiques. Si une requête les utilise, le processus d’actualisation automatisé utilise une actualisation complète, ce qui peut consommer davantage de crédits. Voir Déterminer si une actualisation incrémentielle ou complète est utilisée.

Les fonctions non déterministes ne sont pas prises en charge avec les actualisations incrémentielles, mais certaines fonctions non déterministes sont prises en charge avec les actualisations complètes.

Constructions, opérateurs et fonctions non pris en charge

Les tables dynamiques ne prennent actuellement pas en charge l’actualisation incrémentielle d’un certain nombre de constructions, d’opérateurs et de fonctions. Si vous spécifiez les éléments suivants dans la requête, la table dynamique est mise à jour via une actualisation complète :

  • PIVOT.

  • UNPIVOT.

  • Opérateurs Set :

    • UNION, MINUS, EXCEPT, INTERSECT.

  • L’utilisation suivante de UNION [ ALL ] :

    • UNION ALL d’une table et de l’élément lui-même ou d’un clone de lui-même.

    • UNION ALL de deux GROUP BYs.

  • Jointure latérale.

  • Les modèles de jointure externe (gauche, droite ou complète) :

    • Les jointures externes dans lesquelles les deux parties sont la même table.

    • Les jointures externes dans lesquelles les deux parties sont une sous-requête avec des clauses GROUP BY.

    • Les jointures externes avec des prédicats de non-égalité.

  • Les utilisations suivantes des fonctions de fenêtre :

    • Plusieurs fonctions de fenêtre dans le même bloc SELECT avec des clauses PARTITION BY non identiques.

    • Utilisation des fonctions de fenêtre PERCENT_RANK, DENSE_RANK, RANK avec des fenêtres coulissantes.

    • Utilisation de ANY, puisqu’il s’agit d’une fonction non déterministe.

  • Fonctions tabulaires définies par l’utilisateur (UDTF).

Limitations supplémentaires de l’actualisation incrémentielle

Fonctions définies par l’utilisateur (UDF) : Le remplacement d’une UDF IMMUTABLE alors qu’elle est utilisée par une table dynamique qui utilise l’actualisation incrémentielle peut entraîner un comportement inattendu dans cette table. Les UDFs VOLATILE ne sont pas prises en charge dans le cadre d’une actualisation incrémentielle.

Politiques de masquage et d’accès aux lignes : Les tables dynamiques ne prennent actuellement pas en charge l’actualisation incrémentielle des sources avec des politiques de masquage ou d’accès aux lignes. Si la table sous-jacente est protégée par une politique, la table dynamique utilise l’actualisation complète.

Réplication : Les tables dynamiques répliquées avec actualisation incrémentielle se réinitialisent après le basculement avant de pouvoir reprendre l’actualisation incrémentielle.

Clonage : Dans certains cas, les tables dynamiques incrémentielles clonées peuvent avoir besoin d’être réinitialisées lors de leur première actualisation après leur création.