Tous les produits
Search
Centre de documentation

MaxCompute:FAQ générale sur SQL

Dernière mise à jour :Sep 07, 2026

Questions fréquentes concernant les types de données, les limites SQL et d'autres sujets liés à l'exécution d'instructions SQL dans MaxCompute.

Catégorie

FAQ

Types de données

Limites SQL

Exécution des jobs SQL

Surveillance des jobs SQL

Optimisation des jobs SQL

Mon job SQL s'exécute lentement. Comment puis-je l'optimiser ?

Un champ temporel dans MaxCompute peut-il stocker une date sans heure ?

Oui. Utilisez le type de données DATE, qui nécessite l'activation des types de données MaxCompute V2.0. Pour plus d'informations, consultez Versions des types de données 2,0.

Pourquoi obtiens-je des résultats inattendus lors de la comparaison d'égalité entre deux valeurs DOUBLE dans une instruction SQL MaxCompute ?

Le type de données DOUBLE dans MaxCompute est sujet à des erreurs de précision. N'utilisez pas le signe égal (=) pour comparer directement deux valeurs DOUBLE.

Soustrayez plutôt une valeur de l'autre et vérifiez si la différence absolue est suffisamment faible pour être considérée comme égale.

Comment résoudre une erreur de dépassement de précision pour le type de données DECIMAL ?

Exécutez la commande set odps.sql.decimal.odps2=true; au niveau de la session pour activer la prise en charge des types de données MaxCompute V2.0. La précision maximale du type de données DECIMAL dans MaxCompute est de 38 chiffres. Le stockage de données avec une précision maximale augmente la probabilité d'erreurs de dépassement lors du traitement. Utilisez une précision plus faible lorsque cela est possible.

Les projets MaxCompute nouvellement créés ne prennent pas en charge la conversion implicite des types de données. Comment résoudre ce problème ?

Désactivez la prise en charge des types de données MaxCompute V2.0 pour autoriser la conversion implicite. Pour plus d'informations, consultez Conversion des types de données.

Lorsque j'interroge des données, un message d'erreur indique « XXX type is not enabled in current mode ». Comment résoudre ce problème ?

Exécutez la commande set odps.sql.decimal.odps2=true; au niveau de la session pour activer la prise en charge des types de données MaxCompute V2.0.

Comment gérer la limite de 8 Mo pour un seul champ ?

Un seul champ dans une table MaxCompute ne peut pas dépasser 8 Mo. Si un champ dépasse cette limite, divisez-le en plusieurs champs plus petits en fonction de vos besoins métier.

Les champs volumineux aux structures complexes peuvent dégrader les performances de calcul. Pour éviter cela, concevez votre architecture de données selon les normes d'entrepôt de données :

  • Archivez les données brutes aux structures complexes dans la couche Operational Data Store (ODS) dans un format compressé.

  • Nettoyez périodiquement les données incrémentielles dans la couche ODS (par exemple, quotidiennement). Divisez les champs complexes en plusieurs champs simples et stockez-les dans les tables de la couche Common Data Model (CDM) pour faciliter l'analyse.

Lorsque j'exécute une instruction SQL MaxCompute, un message d'erreur indique « partitions exceeds the specified limit ». Comment résoudre ce problème ?

  • Symptôme

    Lorsque vous exécutez une instruction SQL MaxCompute, le message d'erreur suivant s'affiche.

    FAILED: ODPS-0010000:System internal error - OTS filtering exception - Ots read range partitions exceeds the specified limit:10000:   tableName:xxxx , please check hive conf key
  • Cause

    Une seule table MaxCompute prend en charge jusqu'à 60 000 partitions, mais une seule requête peut accéder à un maximum de 10 000 partitions. Cette erreur peut se produire pour les raisons suivantes :

    • Raison 1 : Vous n'avez pas spécifié de condition de partition.

    • Raison 2 : Vous avez utilisé un champ tel qu'un ID utilisateur comme champ de partition, ce qui a entraîné un nombre excessif de partitions.

  • Solution

    • Solution pour la raison 1 : Si vous n'avez pas spécifié de condition de partition, ajoutez-en une.

    • Solution pour la raison 2 : Si la colonne de clé de partition n'est pas adaptée et entraîne trop de partitions, envisagez de modifier la colonne de clé de partition.

Comment exécuter des instructions SQL MaxCompute de manière non interactive ?

Utilisez Shell pour exécuter des instructions SQL MaxCompute de manière non interactive :

  • Utilisez la commande odps -f filename pour lire et traiter un fichier SQL.

    Lorsque vous exécutez une instruction SQL, la première ligne du fichier filename doit être SQL pour indiquer le mode SQL.

    SQL
    
      select ... from table_name where xxx;                
  • Pour exécuter une seule instruction SQL, utilisez la méthode sqltext dans MaxCompute SQL.

    ./odpscmd -e "select * from dual;"             

    Exécutez odps -help pour plus d'informations.

Comment synchroniser les données de table d'un environnement de développement vers un environnement de production ?

Exécutez la commande suivante dans le client MaxCompute.

insert into project.table select * from project_dev.table;

Si vous ne disposez pas des autorisations de lecture et d'écriture sur la table de production, accordez les autorisations requises à votre compte. Pour plus d'informations, consultez Autorisations MaxCompute.

Comment vérifier si un champ est vide ?

Utilisez les opérateurs dans MaxCompute SQL pour vérifier si un champ est vide. Pour plus d'informations, consultez Opérateurs.

Puis-je appeler MaxCompute SQL depuis un nœud Shell dans DataWorks ?

Non. Les nœuds Shell prennent uniquement en charge la syntaxe Shell standard, et non la syntaxe interactive. Pour exécuter plusieurs jobs, utilisez plutôt un nœud ODPS SQL. Pour plus d'informations, consultez Développer une tâche ODPS SQL.

Comment implémenter une boucle en SQL ?

Utilisez un nœud do-while dans DataWorks.

Comment appeler un nœud d'affectation en SQL ?

Utilisez un nœud for-each dans DataWorks.

Comment consulter toutes les instructions SQL exécutées dans MaxCompute un jour donné ?

Exécutez la commande show p -all -limit <number>; pour consulter l'historique SQL de tous les membres d'un projet MaxCompute. Pour plus d'informations, consultez Afficher les informations d'instance.

Comment consulter l'utilisation des ressources d'un job SQL ?

Consultez l'utilisation des ressources d'un job SQL dans votre facture. Pour plus d'informations, consultez Analyser les détails d'utilisation dans une facture MaxCompute.

Comment consulter le coût d'exécution d'une instruction SQL ?

Utilisez la commande cost sql pour estimer les coûts de requête. Pour plus d'informations, consultez Facturation et estimation.

Mon job SQL s'exécute lentement. Comment puis-je l'optimiser ?

Utilisez Logview pour identifier la cause de la lenteur d'un job SQL. Pour plus d'informations, consultez Pratiques de diagnostic basées sur Logview.

Pour plus d'informations sur l'optimisation des jobs SQL, consultez Bonnes pratiques pour l'optimisation du calcul.