Questions fréquentes sur les opérations DDL relatives aux tables, partitions et colonnes dans MaxCompute.
Catégorie | FAQ |
Opérations sur les tables |
|
Opérations sur les partitions | |
Opérations sur les colonnes | |
Opérations liées au cycle de vie |
Prise en charge des tables virtuelles
MaxCompute ne prend pas en charge les tables virtuelles. Vous pouvez créer manuellement une table DUAL.
Prise en charge des index
Non. Les tables MaxCompute ne disposent pas d'index. Toutefois, la fonctionnalité Hash Clustering fonctionne de manière similaire à un index de cluster dans une base de données. Pour plus d'informations, consultez Opérations sur les tables.
Modification de l'attribut Hash Clustering
Pour ajouter l'attribut Hash Clustering à une table, exécutez la commande suivante :
alter table table_name [clustered by (col_name [, col_name, ...]) [sorted by (col_name [asc | desc] [, col_name [asc | desc] ...])] into number_of_buckets buckets];.Pour supprimer l'attribut Hash Clustering d'une table, exécutez la commande suivante :
alter table table_name not clustered;.
Conversion d'une table non partitionnée en table partitionnée
Vous ne pouvez pas convertir une table non partitionnée en table partitionnée ni ajouter de colonnes de clé de partition à une table existante. Vous devez créer une nouvelle table partitionnée. Pour plus d'informations, consultez Opérations sur les tables.
Restauration d'une table supprimée
MaxCompute propose des fonctionnalités de sauvegarde et de récupération avec une période de rétention gratuite par défaut de 24 heures, que vous pouvez personnaliser. Si vous supprimez une table par erreur, vous pouvez restaurer ses données dans ce délai. Pour plus d'informations sur la sauvegarde et la récupération, consultez sauvegarde et récupération.
Interrogation des tables par propriétaire
Utilisez la vue de métadonnées TABLES et filtrez par le champ owner_name pour trouver les tables créées par un utilisateur spécifique. Pour plus d'informations sur TABLES, consultez TABLES.
Vérification de l'existence d'une table
Vous pouvez utiliser la fonction TABLE_EXISTS pour vérifier si une table spécifique existe. Pour plus d'informations, consultez TABLE_EXISTS.
Obtention de tous les noms de tables d'un projet
Vous pouvez exécuter la commande show tables; dans le client MaxCompute ou utiliser le service de métadonnées de MaxCompute. Pour plus d'informations, consultez Opérations sur les tables ou Information Schema.
Recherche de toutes les tables partitionnées d'un projet
Exécutez la commande suivante dans le client MaxCompute pour trouver toutes les tables partitionnées de votre projet.
select table_name from information_schema.columns where is_partition_key = true group by table_name;
Consultation de la dernière heure d'accès à une table
Dans DataWorks, accédez à la page data map, recherchez votre table et ouvrez sa page de détails. Dans le panneau Technical Information, vous trouverez les champs suivants : Technical type, Last DDL change time, Last data modification time, Last access time et Compute engine information.
Vérification du volume de données d'une table
Le volume de données d'une table correspond au nombre de lignes et à l'espace physique qu'elle occupe :
Pour vérifier l'espace physique d'une table entière, exécutez la commande
desc. Pour vérifier le nombre de lignes, exécutez l'instruction SQLselect count() as cnt from table_name;.
Pour vérifier l'espace physique d'une partition spécifique, exécutez la commande
descavec une clauseWHERE. Pour vérifier le nombre de lignes de la partition, exécutez l'instruction SQLselect count() as cnt from table_name where ...;.
Vérification du nombre de lignes d'une table
Exécutez la commande select count(*) from table_name; dans le client MaxCompute pour vérifier le nombre de lignes d'une table partitionnée ou non partitionnée.
Table non visible dans DataWorks
Si vous créez une table à l'aide d'une instruction SQL au lieu de la créer dans l'interface utilisateur de DataWorks, la table peut ne pas apparaître pendant deux à trois heures.
Partitions et colonnes de clé de partition
Les tables de MaxCompute peuvent être partitionnées. Une table partitionnée possède des colonnes de clé de partition, que vous utilisez pour créer des partitions.
Par exemple, dans une partition spécifiée comme ds=20150101, ds est une colonne de clé de partition et ds=20150101 est une partition.
Nombre optimal de partitions
Une table MaxCompute peut comporter au maximum 60 000 partitions, avec une capacité illimitée par partition. Toutefois, un trop grand nombre de partitions peut compliquer les statistiques et l'analyse des données.
MaxCompute limite le nombre maximal d'instances par tâche. Le nombre d'instances utilisées par une tâche dépend du volume des données d'entrée et du nombre de partitions. Par conséquent, vous devez choisir une stratégie de partitionnement adaptée à vos besoins métier.
Ajout de partitions à une table sans clés de partition
MaxCompute ne permet pas d'ajouter ou de modifier des champs de clé de partition dans une table existante. Vous pouvez créer une nouvelle table partitionnée et utiliser une instruction SQL de partitionnement dynamique pour importer les données de la table source vers la nouvelle table. Pour plus d'informations, consultez Insertion ou remplacement des données dans des partitions dynamiques (DYNAMIC PARTITION).
Vérification de l'existence d'une partition
Vous pouvez utiliser la fonction PARTITION_EXISTS pour vérifier si une partition spécifique existe. Pour plus d'informations, consultez PARTITION_EXISTS.
Vérification du nombre de partitions
Utilisez la vue PARTITIONS dans Information Schema pour obtenir les noms des partitions, puis comptez-les.
Ajout ou suppression de colonnes
MaxCompute prend en charge l'ajout et la suppression de colonnes. L'ajout de colonnes d'un type de données complexe et la suppression de colonnes sont disponibles en aperçu sur invitation. Pour demander un essai, consultez Demander un essai des nouvelles fonctionnalités.
Ajout d'une colonne
Exécutez la commande suivante pour ajouter des colonnes. Si la table contient déjà des données, les nouvelles colonnes auront la valeur NULL pour toutes les lignes existantes.
alter table table_name add columns (col_name1 type1, col_name2 type2…);
Pour plus d'informations sur la syntaxe, consultez Ajouter une colonne.
Configuration d'une colonne à incrémentation automatique
MaxCompute ne prend pas en charge les colonnes à incrémentation automatique. Pour un petit volume de données, vous pouvez utiliser la fonction ROW_NUMBER comme solution de contournement.
Nombre maximal de colonnes par table
Une seule table MaxCompute peut comporter au maximum 1 200 colonnes. Si votre table dépasse cette limite, envisagez les solutions suivantes :
Réduisez le nombre de dimensions de vos données à 1 200 colonnes ou moins.
Modifiez la méthode de stockage des données, par exemple en utilisant des types de données complexes tels que des tableaux ou des maps pour regrouper les données connexes.
Utilisation de mots clés comme noms de colonnes
Si vous utilisez un mot clé pour nommer une table, une colonne ou une partition, vous devez entourer le mot clé d'accents graves (). Sinon, une erreur se produit.
Modification du type de données d'une colonne
Vous ne pouvez pas modifier le type de données d'une colonne existante. Créez plutôt une nouvelle table avec le type de données souhaité et migrez les données. Pour plus d'informations sur les types de données, consultez Éditions des types de données.
Nettoyage des données pour les tables partitionnées avec un cycle de vie
Lorsqu'une partition d'une table avec un cycle de vie configuré n'est pas modifiée dans le délai spécifié, MaxCompute la récupère automatiquement.
Exécutez la commande desc table_name partition(pt_spec); pour vérifier si une ancienne partition a été modifiée pendant la période du cycle de vie. Exécutez la commande desc tablename; pour afficher le paramètre du cycle de vie. MaxCompute récupère les partitions expirées quotidiennement à 17 h 00. La mise à jour du statut dans la console DataWorks peut être retardée, généralement d'un jour maximum.