Tous les produits
Search
Centre de documentation

DataWorks:Nœud MaxCompute SQL

Dernière mise à jour :Aug 10, 2026

Le nœud MaxCompute SQL de DataWorks planifie périodiquement des tâches MaxCompute SQL et s'intègre à d'autres types de nœuds au sein d'un flux de travail unifié. MaxCompute SQL utilise une syntaxe de type SQL adaptée au traitement distribué de données volumineuses (niveau TB) lorsque les résultats en temps réel ne sont pas critiques.

Présentation

MaxCompute SQL traite et interroge les données dans MaxCompute. Il prend en charge les opérations SQL courantes telles que SELECT, INSERT, UPDATE et DELETE, ainsi que la syntaxe et les fonctions spécifiques à MaxCompute. Pour plus d'informations sur la syntaxe SQL, consultez Présentation du langage SQL.

Prérequis

  • Vous avez lié un moteur de calcul MaxCompute à l'espace de travail DataWorks.

  • (Facultatif, pour les utilisateurs RAM) L'utilisateur RAM chargé du développement des tâches doit être membre de l'espace de travail et disposer du rôle Development ou Workspace Administrator. Le rôle Workspace Administrator inclut des autorisations étendues et doit être attribué avec prudence. Pour plus d'informations sur l'ajout d'un membre à un espace de travail, consultez Ajouter des membres à un espace de travail.

    Remarque

    Si vous utilisez un compte Alibaba Cloud, ignorez cette étape.

Limites

Les limites suivantes s'appliquent au développement SQL dans le nœud MaxCompute SQL :

Catégorie

Description

Commentaires

Seuls les commentaires sur une seule ligne commençant par -- sont pris en charge. Les commentaires multilignes (/ ... /) ne sont pas pris en charge.

Pour plus d'informations, consultez Commentaires SQL MaxCompute.

Les limites suivantes s'appliquent également aux commentaires :

  • Vous ne pouvez pas ajouter de commentaire après une instruction contenant uniquement un mot-clé, tel que SET ou USE.

  • N'utilisez pas de point-virgule (;) dans un commentaire.

  • N'ajoutez pas de commentaire après une instruction se terminant par un point-virgule (;), qui marque la fin de l'instruction.

Soumission SQL

ODPS SQL ne prend pas en charge les instructions SET ou USE autonomes. Elles doivent être exécutées conjointement avec une instruction SQL spécifique.

Développement SQL

La taille du code SQL ne peut pas dépasser128 Ko et le nombre d'instructions SQL ne peut pas dépasser200.

Résultats de requête

Seules les instructions SQL commençant par SELECT ou WITH peuvent produire des jeux de résultats formatés.

Les résultats de requête présentent les limites suivantes :

  • Si le résultat de la requête dépasse 10 000 lignes, un maximum de 10 000 lignes est affiché.

  • Si le résultat de la requête dépasse 10 Mo, l'erreur Result is too large, exceed the limit size: 10MB est renvoyée.

Remarque

Si vous rencontrez des limites liées aux résultats de requête, téléchargez ces résultats sur votre machine locale en utilisant l'une des méthodes suivantes :

Remarques

  • Assurez-vous que le compte utilisé pour exécuter les tâches MaxCompute SQL dispose des autorisations requises sur le projet MaxCompute correspondant. Pour plus d'informations, consultez Contrôle des autorisations DataWorks sur MaxCompute et Autorisation MaxCompute.

  • L'exécution des tâches MaxCompute SQL dépend des ressources de quota. Si votre tâche met beaucoup de temps à s'exécuter, accédez à la console MaxCompute pour vérifier la consommation des ressources de quota et vous assurer que suffisamment de ressources sont disponibles pour l'exécution de la tâche. Pour plus d'informations, consultez Afficher la consommation des ressources de quota.

  • Lorsque vous développez des tâches de nœud MaxCompute SQL, placez les paramètres spéciaux tels que les chemins OSS entre guillemets doubles. L'absence de guillemets peut provoquer des exceptions d'analyse de la tâche, entraînant l'échec de son exécution.

  • Lorsque vous exécutez des instructions liées aux mots-clés (SET, USE) dans différents environnements sur DataWorks, l'ordre d'exécution varie. Pour plus d'informations, consultez Annexe 1 : Ordre d'exécution SQL dans différents environnements.

  • Dans certains cas extrêmes, tels qu'une panne de courant du serveur ou un basculement primaire/secondaire, DataWorks peut ne pas être en mesure de terminer complètement les tâches MaxCompute associées. Dans cette situation, accédez au projet MaxCompute correspondant pour arrêter la tâche.

  • Lorsque l'objectif principal d'une tâche est de créer une nouvelle table (par exemple, DROP TABLE suivi de CREATE TABLE AS SELECT), le moteur MaxCompute effectue une pré-vérification des métadonnées avant l'exécution. Si la table existe déjà, une erreur est directement renvoyée. Pour la création initiale de table, utilisez CREATE TABLE IF NOT EXISTS. Pour les écritures de données ultérieures, utilisez plutôt INSERT OVERWRITE TABLE ... SELECT ....

  • Contrôlez le mode d'exécution SQL en définissant le paramètre odps.task.sql.realtime . Définissez la valeur sur true pour activer le mode Online pour une exécution en temps réel, ou sur false pour forcer le mode Offline. Placez ce paramètre au début de votre code SQL, avant les instructions SQL métier. Exemple :

    SET odps.task.sql.realtime=true;
    -- Your business SQL statements
    SELECT * FROM my_table;
  • La modification directe du type de données d'une colonne de STRING vers des types complexes tels que STRUCT n'est pas prise en charge. Si l'erreur ODPS-0130071 est renvoyée, vérifiez si la conversion de type de champ respecte les règles sémantiques et évitez les opérations de conversion de type non prises en charge.

Créer un nœud MaxCompute SQL

Pour savoir comment créer un nœud, consultez Créer un nœud MaxCompute SQL.

Développer un nœud MaxCompute SQL

Sur la page d'édition du nœud MaxCompute SQL, effectuez les opérations suivantes.

Développer du code SQL

DataWorks fournit des paramètres de planification pour transmettre dynamiquement des valeurs au code dans des scénarios de planification. Définissez des variables dans un nœud MaxCompute SQL en utilisant le format ${nom_variable}, puis attribuez-leur des valeurs dans la section Scheduling Parameters de Scheduling Settings. Pour plus d'informations sur les formats pris en charge, consultez Paramètres de planification. MaxCompute SQL utilise une syntaxe similaire au SQL standard et prend en charge les instructions DDL, DML et DQL, ainsi que la syntaxe spécifique à MaxCompute. Pour une syntaxe détaillée et des exemples, consultez Présentation du langage SQL.

Les trois exemples suivants illustrent différents scénarios :

Remarque
  • Lorsque les fonctions étendues de MaxCompute 2.0 utilisent de nouveaux types de données, ajoutez SET odps.sql.type.system.odps2=true; avant l'instruction SQL contenant la fonction, et soumettez-la et exécutez-la conjointement avec l'instruction SQL pour que les nouveaux types de données fonctionnent correctement. Pour plus d'informations sur les types de données 2.0, consultez Types de données MaxCompute 2.0.

  • Les instructions SQL MaxCompute sont exécutées dans un ordre différent dans les environnements Data Studio et Operation Center. Pour plus d'informations, consultez Annexe 1 : Ordre d'exécution SQL dans différents environnements.

Créer une table

Utilisez l'instruction CREATE TABLE pour créer des tables non partitionnées, des tables partitionnées, des tables externes et des tables clusterisées. Pour plus d'informations, consultez CREATE TABLE. Voici un exemple SQL :

-- Create a partitioned table named students
CREATE TABLE IF NOT EXISTS students
( id BIGINT,
  name STRING,
  age BIGINT,
  birth DATE)
partitioned BY (gender STRING); 
Insérer des données

Utilisez l'instruction INSERT INTO ou INSERT OVERWRITE pour insérer ou mettre à jour des données dans une table de destination. Pour plus d'informations, consultez Insérer ou écraser des données.

Évitez d'utiliser l'instruction INSERT INTO pour insérer des données, car cela peut entraîner une duplication inattendue des données. Nous vous recommandons d'utiliser INSERT OVERWRITE à la place. Pour plus d'informations, consultez Insérer ou écraser des données .

Voici un exemple SQL :

-- Insert data
INSERT OVERWRITE students PARTITION(gender='boy') VALUES (1,'ZhangSan',15,DATE '2008-05-15') ;

L'instruction INSERT peut déclencher la fonctionnalité Compare DDL Columns, qui vous permet de comparer les colonnes de la clause SELECT d'une instruction SQL avec les colonnes de la table de destination.

Cette fonctionnalité n'est pas prise en charge lorsque le projet MaxCompute a activé le modèle à trois couches basé sur le schéma au niveau du projet mais pas au niveau du locataire.
-- Compare DDL columns
INSERT OVERWRITE TABLE dws_user_info_all_di PARTITION (dt='${workflow.var}')
SELECT COALESCE(a.uid, b.uid) AS uid
    , b.gender
    , b.age_range
    , b.zodiac
    , a.region
    , a.device
    , a.identity
    , a.method
    , a.url
    , a.referer
    , a.time
-- ...The FROM/JOIN and other clauses are omitted here. Complete them based on your actual business requirements.
;
Interroger des données

Utilisez l'instruction SELECT pour effectuer des requêtes imbriquées, des requêtes groupées, des tris et d'autres opérations. Pour plus d'informations, consultez Syntaxe SELECT. Voici un exemple SQL :

-- (Optional) Enable full table scan at the project level. This operation requires elevated permissions.
-- SETPROJECT odps.sql.allow.fullscan=true;  
-- Enable full table scan at the session level. This setting is effective only for the current session.
SET odps.sql.allow.fullscan=true; 
-- Query information about all male students and sort the results by ID in ascending order.
SELECT * FROM students WHERE gender='boy' ORDER BY id;
Remarque

Par défaut, les utilisateurs RAM ne disposent pas de l'autorisation d'interroger les tables de production. Pour demander des autorisations d'interrogation des tables de production, accédez au Security Center. Pour plus d'informations sur les préréglages d'autorisations de données MaxCompute et le contrôle d'accès aux données sur DataWorks, consultez Préréglages d'autorisations de données MaxCompute et contrôle d'accès. Pour plus d'informations sur l'autorisation basée sur les commandes MaxCompute, consultez Autorisation MaxCompute.

Utiliser des fonctions SQL

MaxCompute prend en charge les fonctions intégrées et les fonctions définies par l'utilisateur (UDF). Créez et utilisez des fonctions SQL en fonction de vos besoins métier. Pour plus d'informations sur les fonctions intégrées, consultez Présentation des fonctions intégrées. Pour plus d'informations sur les UDF, consultez Présentation des UDF. Les exemples suivants montrent comment utiliser des fonctions SQL.

  • Fonctions intégrées : Les fonctions intégrées sont préinstallées dans MaxCompute et peuvent être appelées directement. Sur la base des exemples précédents de création de table, d'insertion de données et d'interrogation de données, vous pouvez utiliser la fonction dateadd pour modifier la colonne birth selon une unité et un décalage spécifiés. Voici un exemple de commande :

    --Enable full table scan at session level. Only effective for this session.
    SET odps.sql.allow.fullscan=true; 
    SELECT id, name, age, birth, dateadd(birth,1,'mm') AS birth_dateadd FROM students;
  • Fonctions définies par l'utilisateur (UDF) : Pour utiliser une UDF, écrivez le code de la fonction, téléchargez-le en tant que ressource et enregistrez la fonction. Pour plus d'informations, consultez Créer une UDF MaxCompute.

Déboguer un nœud MaxCompute SQL

  1. Configurez les paramètres pertinents dans le panneau Run Configuration situé sur le côté droit de la page d'édition du nœud.

    |
    **Paramètre**
    |
    **Description**
    | | --- | --- | |
    **Compute resource**
    |
    Sélectionnez la ressource de calcul MaxCompute que vous avez associée à l'espace de travail.
    | |
    **Compute quota**
    |
    Sélectionnez le quota de calcul pour fournir les ressources de calcul requises (CPU et mémoire) pour les travaux de calcul.


    Si aucun quota de calcul n'est disponible, cliquez sur **Create Compute Quota** dans la liste déroulante et créez un quota sur la [console MaxCompute](https://maxcompute.console.alibabacloud.com). Pour plus d'informations, consultez [Créer un quota de calcul](t2242047.xdita#title_29q_66v_6o0).
    | |
    **Resource group**
    |
    Sélectionnez un groupe de ressources de planification ayant réussi le test de connectivité avec la ressource de calcul. Pour plus d'informations, consultez [Groupes de ressources pour la planification](t1695533.dita#concept_ovl_zgv_42b).
    |


















  2. Dans la boîte de dialogue des paramètres de la barre d'outils, sélectionnez la source de données MaxCompute que vous avez créée, puis cliquez sur Run pour exécuter la tâche MaxCompute SQL.

Remarque

L'exécution directe d'un nœud dans DataStudio correspond au mode débogage. Dans ce mode, le nœud valide uniquement la logique SQL et ne dépend pas de la configuration de planification. Si vous devez exécuter le nœud dans un flux de travail (mode planification), effectuez les configurations suivantes avant que le flux de travail puisse exécuter le nœud :

  1. Dans la configuration d'exécution, sélectionnez la Compute resource requise.

  2. Configurez les propriétés de Scheduling du nœud.

  3. Deploy le nœud vers l'environnement de production.

Afficher les résultats

  • Les résultats sont affichés sous forme de feuille de calcul. Vous pouvez effectuer des opérations dans DataWorks, ouvrir les résultats dans une feuille de calcul ou copier-coller le contenu dans un fichier Excel local.

    Remarque

    En raison des modifications apportées aux informations de fuseau horaire de la Chine publiées par l'Organisation internationale de normalisation (ISO), des écarts d'affichage des dates peuvent survenir pour certaines périodes lors de l'exécution d'instructions SQL connexes via DataWorks : une différence de 5 minutes et 52 secondes pour les dates comprises entre 1900 et 1928, et une différence de 9 secondes pour les dates antérieures à 1900.

  • Journal d'exécution : Dans l'onglet image des résultats, cliquez sur le lien Logview pour afficher les journaux. Pour plus d'informations, consultez LogView.

  • Trier les résultats : Sur la page des résultats, cliquez sur le menu déroulant de l'en-tête de colonne correspondant, sélectionnez l'ordre croissant ou décroissant dans la section Sort, puis confirmez pour trier les résultats.

  • Afficher les colonnes BLOB : MaxCompute prend en charge le type de données BLOB pour stocker des objets binaires tels que des images et des fichiers audio. Dans les résultats, double-cliquez sur une cellule de ce type de données pour prévisualiser le contenu dans la boîte de dialogue Current Field Value (les images sont rendues directement ; le texte est affiché en mode lecture seule). Vous pouvez basculer entre Blob View, Text View et JSON View à l'aide des boutons situés en bas de la boîte de dialogue.

  • Affichage en notation scientifique : Dans l'environnement de développement de données DataWorks, les valeurs numériques des résultats de requête peuvent être affichées en notation scientifique. Il s'agit d'un problème d'affichage frontal qui n'affecte pas les valeurs de données réelles. Pour garantir que les valeurs numériques s'affichent comme prévu, utilisez la fonction CAST dans votre SQL pour convertir manuellement le type de données. Par exemple, utilisez CAST(column_name AS STRING) pour convertir une valeur numérique en chaîne pour l'affichage. Vous pouvez également vérifier l'exactitude des données dans le module DataAnalysis.

Étapes suivantes

  • Configurer les paramètres de planification : Si les nœuds du répertoire du projet doivent être planifiés périodiquement, configurez la Scheduling Policy et les propriétés de planification associées dans le panneau Scheduling Settings situé sur le côté droit du nœud.

  • Déployer un nœud : Si une tâche doit être déployée dans l'environnement de production, cliquez sur l'icône image sur la page pour lancer le processus de déploiement. Les nœuds du répertoire du projet ne sont planifiés périodiquement qu'après leur déploiement dans l'environnement de production.

Annexe 1 : Ordre d'exécution SQL dans différents environnements

Lorsque vous exécutez des instructions liées aux mots-clés (SET, USE) dans différents environnements DataWorks pour un nœud MaxCompute SQL, l'ordre d'exécution varie.

  • Exécution dans Data Studio : Toutes les instructions de mots-clés (SET, USE) du code de la tâche actuelle sont fusionnées et ajoutées au début de toutes les instructions SQL.

  • Exécution dans l'environnement de planification : Les instructions sont exécutées dans l'ordre où elles sont écrites.

Supposons que le code suivant soit défini dans un nœud.

SET a=b;
CREATE TABLE name1(id string);
SET c=d;
CREATE TABLE name2(id string);

L'ordre d'exécution varie selon l'environnement comme suit :

Instruction SQL

Data Studio

Environnement de planification

Première instruction SQL

SET a=b;
SET c=d;
CREATE TABLE name1(id string);
SET a=b;
    CREATE TABLE name1(id string);

Deuxième instruction SQL

SET a=b;
SET c=d;
CREATE TABLE name2(id string);
SET c=d;
    CREATE TABLE name2(id string);

Annexe 2 : Pratiques Lakehouse

Pour lire et écrire dans les tables de données DLF dans les tâches MaxCompute SQL, utilisez les projets externes MaxCompute (External Project). Les projets externes permettent un accès en temps réel aux métadonnées et aux données en mappant les catalogues DLF. Ils délèguent la gestion des autorisations à DLF et prennent en charge l'accès aux métadonnées ainsi que les opérations de lecture/écriture sur les données gérées par DLF stockées dans OSS. Pour plus d'informations, consultez Projets externes MaxCompute.

Références

Pour plus d'exemples de tâches MaxCompute SQL, consultez les rubriques suivantes :