Questions fréquentes relatives aux types de données, aux limites SQL et à d'autres sujets concernant l'exécution d'instructions SQL dans MaxCompute.
|
Catégorie |
FAQ |
|
Types de données |
|
|
Limites SQL |
|
|
Exécution des tâches SQL |
|
|
Surveillance des tâches SQL |
|
|
Optimisation des tâches SQL |
Ma tâche 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 des 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 trop élevé 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 appropriée et entraîne un nombre excessif 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 filenamepour lire et traiter un fichier SQL.Lorsque vous exécutez une instruction SQL, la première ligne du fichier
filenamedoit êtreSQLpour indiquer le mode SQL.SQL select ... from table_name where xxx; -
Pour exécuter une seule instruction SQL, utilisez la méthode
sqltextdans SQL MaxCompute../odpscmd -e "select * from dual;"Exécutez
odps -helppour plus d'informations.
Puis-je utiliser SQL pour transférer une configuration MaxCompute vers un autre compte Alibaba Cloud ?
Oui. Utilisez la méthode Package. Pour plus d'informations, consultez Bonnes pratiques pour le développement collaboratif de données multi-équipes et la gestion de projet dans MaxCompute.
Comment synchroniser les données d'une 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 SQL MaxCompute pour vérifier si un champ est vide. Pour plus d'informations, consultez Opérateurs.
Puis-je appeler SQL MaxCompute 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 tâches, 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 de l'instance.
Comment consulter l'utilisation des ressources d'une tâche SQL ?
Consultez l'utilisation des ressources d'une tâche 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 Mesure et estimation.
Ma tâche SQL s'exécute lentement. Comment puis-je l'optimiser ?
Utilisez Logview pour identifier la cause d'une tâche SQL lente. Pour plus d'informations, consultez Pratiques de diagnostic basées sur Logview.
Pour plus d'informations sur l'optimisation des tâches SQL, consultez Bonnes pratiques pour l'optimisation du calcul.