Tableaux

Les tables définissent la structure de vos données.

Vous pouvez charger de nouvelles données dans vos tables ou référencer des données dans un emplacement existant. Vous pouvez définir des droits d'accès de contrôle d'accès de niveau fin sur les tables en créant des droits d'accès de table.

Les tables peuvent être externes ou gérées.

Tables externes

Une table externe définit une structure pour les données stockées dans un emplacement non géré par Oracle AI Data Platform Workbench. Lorsque vous créez une table externe dans AI Data Platform Workbench, le cycle de vie des métadonnées est géré par AI Data Platform Workbench. Lorsque vous supprimez une table externe, seule la définition de la table est supprimée. Les données référencées par la table externe ne sont pas supprimées.

Assurez-vous que les stratégies IAM suivantes sont requises pour créer des tables externes aux utilisateurs :

allow group <GroupName> to read buckets in compartment id <external-data-CompartmentId>
allow group <GroupName> to inspect objects in compartment id <external-data-CompartmentId>

Des stratégies IAM supplémentaires sont requises pour les tables externes. Pour plus d'informations, reportez-vous à Stratégies IAM pour Oracle AI Data Platform Workbench.

Tables gérées

Une table gérée définit une structure pour les données stockées dans AI Data Platform et accessibles uniquement par les utilisateurs d'AI Data Platform Workbench.

Lorsque vous supprimez une table gérée, la définition et les données de la table sont supprimées.

Formats de table pris en charge

Format Description Utilisation
Valeurs séparées par des virgules (CSV) Les données sont stockées sous forme de fichier texte avec un format de fichier basé sur une ligne spécifique pour structurer les données. En général, la première ligne du fichier est une ligne d'en-tête qui contient les noms de colonne des données. Utilisé pour échanger des données tabulaires entre les systèmes. Chaque ligne du fichier est une ligne d'une table.
JavaScript Object Notation (JSON) Les données sont stockées dans un format texte standard pour représenter des données structurées en fonction de la syntaxe d'objet JavaScript. JSON prend en charge les listes d'objets ou les structures hiérarchiques. Utilisé dans les applications de flux. JSON simplifie le stockage des données associées avec des relations complexes dans un seul document et évite la conversion chaotique des listes en un modèle de données relationnel. Notez que JSON n'est pas splittable.
Avro Les données sont stockées dans un format binaire basé sur des lignes, tandis que le schéma est stocké au format JSON afin de réduire la taille du fichier et d'optimiser l'efficacité. Avro offre une prise en charge fiable de l'évolution des schémas en gérant les champs ajoutés, manquants et modifiés. Cela permet aux anciens logiciels de lire de nouvelles données et aux nouveaux logiciels de lire d'anciennes données. Egalement appelé système de sérialisation des données. Utilisé pour le stockage de données car les fichiers avro sont divisibles et compressibles. Le stockage en ligne sérialisé est idéal pour les transactions d'écriture lourdes, telles que l'insertion de données dans AI Data Platform. Avro est également un bon choix lorsque l'évolution du schéma est critique lors des écritures à grande vitesse.
Parquet Les données sont stockées dans un format de données en colonnes et sont hautement compressibles et séparables. Parquet est optimisé pour le paradigme Write Once Read Many (WORM). Il écrit lentement mais se lit incroyablement rapidement, surtout lorsque vous accédez uniquement à un sous-ensemble de colonnes. Utilisé pour résoudre les problèmes de Big Data car les algorithmes de compression fonctionnent mieux avec le format de données en colonnes. Vous pouvez stocker le Big Data dans différents formats, tels que des images, des vidéos, des documents et des tables de données structurées. Parquet est un bon choix pour les charges de travail lourdes lors de la lecture de parties de données. Par exemple, lorsque l'ensemble de données comporte de nombreuses colonnes, mais que vous souhaitez uniquement accéder à un sous-ensemble de colonnes. Idéal lorsque vous dépendez de Spark ou que vous voulez que plusieurs services accèdent aux mêmes données stockées dans Object Storage.
Colonne de ligne optimisée (ORC) Les données sont stockées dans des ensembles de lignes dans un fichier unique au format colonne. Utilisé pour le traitement parallèle des ensembles de lignes dans un cluster. Idéal lorsque les transactions de lecture sont plus que des transactions d'écriture ou lorsque la compression est prioritaire.
Delta Les données sont stockées dans un format en colonnes qui étend les fichiers de données Parquet avec un journal de transactions basé sur un fichier JSON pour les transactions ACID et la gestion évolutive des métadonnées. Utilisé pour la prise en charge des transactions.

Types de données pris en charge

Type de données Description
Type d'octet Représente des nombres entiers signés sur 1 octet. La plage de nombres est comprise entre -128 et 127.
Type abrégé Représente des nombres entiers signés sur 2 octets. La gamme de nombres va de -32768 à 32767.
Type entier Représente des nombres entiers signés sur 4 octets. La plage de nombres est comprise entre -2147483648 et 2147483647.
Type long Représente des nombres entiers signés sur 8 octets. La gamme de nombres va de -9223372036854775808 à 9223372036854775807.
Type flottant Représente des nombres à virgule flottante de précision unique de 4 octets.
Type double Représente des nombres à virgule flottante de double précision de 8 octets.
Type décimal Nombres décimaux signés à précision arbitraire. Soutenu en interne par java.math.BigDecimal. Une valeur BigDecimal se compose d'un entier de précision arbitraire sans échelle et d'une échelle entière de 32 bits.
Type de chaîne Représente les valeurs de chaîne de caractères.
VarcharType(longueur) Variante de StringType ayant une limite de longueur. L'écriture des données échouera si la chaîne d'entrée dépasse la limite de longueur.
Type de caractère (longueur) Une variante de VarcharType(longueur) qui est de longueur fixe. La lecture d'une colonne de type CharType(n) renvoie toujours des valeurs de chaîne de longueur n. La comparaison des colonnes de type caractère permet d'ajouter la valeur courte à la valeur plus longue.
Type binaire Représente les valeurs de séquence d'octets.
Type booléen Représente les valeurs booléennes
Type de date Représente les valeurs des champs année, mois et jour, sans fuseau horaire.
TimestampType Horodatage avec fuseau horaire local (TIMESTAMP_LTZ). Il représente les valeurs des champs année, mois, jour, heure, minute et seconde, avec le fuseau horaire local de la session. La valeur d'horodatage représente un point dans le temps absolu.
HorodatageNTZType Horodatage sans fuseau horaire (TIMESTAMP_NTZ). Il représente les valeurs des champs année, mois, jour, heure, minute et seconde. Toutes les opérations sont effectuées sans tenir compte d'un fuseau horaire.
AnnéeMoisTypeInterval(startField, endField) Représente un intervalle annuel-mois composé d'un sous-ensemble contigu de MOIS, mois dans les années [0..11] et ANNEE, années dans la plage [0..178956970].
DayTimeIntervalType (champ de début, champ de fin) Représente un intervalle de jour composé d'un sous-ensemble contigu de SECOND, secondes dans les minutes et éventuellement des fractions d'une seconde [0..59.99999], MINUTE, minutes dans les heures [0..59], HOUR, heures dans les jours [0..23] et DAY, jours dans la plage [0..106751991].
ArrayType(elementType, containsNull) Représente les valeurs comprenant une séquence d'éléments avec le type elementType. containsNull est utilisé pour indiquer si les éléments d'une valeur ArrayType peuvent avoir des valeurs NULL.
MapType(keyType, valueType, valueContainsNull) Représente des valeurs comprenant un ensemble de paires clé-valeur. Le type de données des clés est décrit par keyType et le type de données des valeurs est décrit par valueType. Pour une valeur MapType, les clés ne sont pas autorisées à avoir des valeurs NULL. valueContainsNull est utilisé pour indiquer si les valeurs d'une valeur MapType peuvent avoir des valeurs NULL.
StructType(champs) Représente les valeurs avec la structure décrite par une séquence de StructFields (champs).
StructField(nom, dataType, nullable) Représente un champ dans un type de structure. Le nom d'un champ est indiqué par son nom. Le type de données d'un champ est indiqué par dataType. La valeur NULL est utilisée pour indiquer si les valeurs de ces champs peuvent avoir des valeurs NULL.

Limites

Les limitations suivantes s'appliquent aux tables d'Oracle AI Data Platform :

  • Vous ne pouvez pas définir de table externe sur des fichiers de données ou des répertoires dans/sur un volume.
  • Vous ne pouvez pas définir une table externe sur un bucket et/ou son répertoire qui est déjà utilisé pour une autre table externe ou un autre volume externe
  • Les vues ne peuvent pas être affichées/répertoriées dans le catalogue principal.

Evolution du schéma

L'évolution des schémas dans Oracle AI Data Platform Workbench permet aux utilisateurs disposant des droits d'accès requis de mettre à jour une table gérée à l'aide de SQL dans un bloc-notes.

Cela est utile lorsqu'une définition de table change au fil du temps pour prendre en charge de nouvelles colonnes, des colonnes enlevées, des colonnes renommées, des modifications de partition ou des noms de table sans recréer l'ensemble de données à partir de zéro. Les formats pris en charge sont Parquet, Avro et Delta.

Opérations prises en charge

Les opérations d'évolution de schéma suivantes ont été analysées pour les tables gérées :
  • Renommer la table : pris en charge pour Delta, Parquet et Avro
  • Ajouter des colonnes : prise en charge pour Delta, Parquet et Avro
  • Colonnes de suppression : prise en charge pour Delta ; non prise en charge pour Parquet et Avro
  • Modification ou changement de nom des colonnes : prise en charge pour Delta ; non prise en charge pour Parquet et Avro
  • Remplacer les colonnes : prise en charge pour Delta uniquement
  • Ajouter des partitions : prise en charge pour Parquet et Avro via DDL ; pour Delta, la gestion des partitions est prise en charge lors de l'insertion des données plutôt que via DDL
  • Supprimer des partitions : pris en charge pour Parquet et Avro ; pour Delta, les partitions sont supprimées en supprimant des données et en exécutant le vide plutôt que par DDL direct
  • Modifier le type de données : n'est pas pris en charge pour Parquet ou Avro ; n'est pas pris en charge pour Delta via le DDL direct et peut nécessiter un CTAS ou une solution de contournement basée sur le schéma d'écrasement.

Créer une table gérée

Vous pouvez créer des tables pour le schéma que vous gérez.

  1. Accédez au schéma pour lequel vous voulez créer une table.
  2. Sélectionnez l'onglet Tables.
  3. Cliquez sur Icône Créer une table Créer une table.

    Créer une table avec le type de table Géré sélectionné

  4. Sélectionnez Géré pour le type de table.
  5. Sélectionnez le format de la table dans Format de table géré.
  6. Glissez-déplacez un fichier avec vos données de table ou cliquez pour accéder à l'emplacement du fichier.
  7. Indiquez le nom et la description de la table.
  8. Facultatif : pour ajouter des partitions, développez Clés de partition (facultatif). Cliquez sur Ajouter une partition et sélectionnez une colonne de données.
  9. Facultatif : pour ajouter des propriétés de table aux métadonnées du catalogue de données, développez Propriétés de table (facultatif). Cliquez sur Ajouter une propriété et indiquez la propriété et sa valeur.
  10. Cliquez sur Créer.

Créer une table externe

Vous pouvez créer une table externe avec des données dans OCI Object Storage.

  1. Accédez au schéma pour lequel vous voulez créer une table.
  2. Sélectionnez l'onglet Tables.
  3. Cliquez sur Icône Créer une table Créer une table.

    Créer une page de table ouverte avec le type de table Externe sélectionné

  4. Sélectionnez Externe pour le type de table.
  5. Sélectionnez le compartiment, le bucket et le dossier dans OCI Object Storage où les données sont stockées. Les objets que vous pouvez sélectionner dépendent des droits d'accès IAM de l'utilisateur connecté.
  6. Indiquez le nom et la description de la table.
  7. Facultatif : pour ajouter des propriétés de table aux métadonnées du catalogue de données, développez Propriétés de table (facultatif). Cliquez sur Ajouter une propriété et indiquez la propriété et sa valeur.
  8. Cliquez sur Créer.

Modifier un tableau

Vous pouvez modifier les détails des tables que vous gérez.

Remarques :

Les modifications apportées aux tables de catalogue externes dans Oracle AI Data Platform Workbench ne sont pas transmises au catalogue distant.
  1. Accédez à votre schéma.
  2. Sélectionnez l'onglet Tables.
  3. En regard de la table à modifier, cliquez sur Icône Actions à trois points Actions.
    • Cliquez sur Renommer pour modifier le nom de la table. Saisissez un nouveau nom, puis appuyez sur Entrée.
    • Cliquez sur Modifier la description pour modifier la description de votre table. Fournissez la nouvelle description et cliquez sur Enregistrer.

Visualiser les détails de la table

Vous pouvez visualiser les détails des tables du schéma.

  1. Accédez à votre schéma. Cliquez sur l'onglet Tables.
  2. Cliquez sur le nom du volume pour lequel afficher les détails. Vous pouvez également cliquer sur Icône Actions à trois points Actions en regard du volume, puis sur Visualiser.
  3. Cliquez sur l'onglet Détails.

Suppression d'une table

Vous pouvez supprimer des tables du schéma que vous gérez.

  1. Accédez au schéma dont vous souhaitez supprimer la table.
  2. Cliquez sur l'onglet Tables.
  3. En regard de la table à supprimer, cliquez sur Icône Actions à trois points Actions, puis sur Supprimer.
  4. Cliquez sur Supprimer.