Tous les produits
Search
Centre de documentation

MaxCompute:APPROX_DISTINCT

Dernière mise à jour :Oct 10, 2026

Renvoie le nombre approximatif de valeurs distinctes dans une colonne spécifiée. Cette fonction est une fonction étendue de MaxCompute V2.0.

Notes d'utilisation

  • MaxCompute V2.0 introduit de nouvelles fonctions étendues. Si les fonctions que vous utilisez impliquent de nouveaux types de données, notamment TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP et BINARY, vous devez exécuter une instruction pour activer l'édition des types de données MaxCompute V2.0 :

    • Au niveau de la session : ajoutez SET odps.sql.type.system.odps2=true; avant l'instruction SQL à exécuter, puis validez et exécutez-les ensemble.

    • Au niveau du projet : le propriétaire du projet peut activer l'édition des types de données MaxCompute V2.0 pour le projet en fonction des besoins. Instruction :

      setproject odps.sql.type.system.odps2=true;

      La configuration prend effet après 10 à 15 minutes.

      Pour plus d'informations sur setproject, consultez Commandes de projet. Pour plus d'informations sur les précautions à prendre lors de l'activation de l'édition des types de données MaxCompute V2.0 au niveau du projet, consultez Guide des versions de type de données.

  • Si vous utilisez une instruction SQL incluant plusieurs fonctions d'agrégation et que les ressources du projet sont insuffisantes, un dépassement de mémoire peut se produire. Nous vous recommandons d'optimiser l'instruction SQL ou d'acheter des ressources de calcul supplémentaires selon vos besoins.

Syntaxe

approx_distinct(<colname>)

Paramètres

colname : obligatoire. Ce paramètre spécifie le nom de la colonne dont il faut supprimer les doublons.

Valeur de retour

Renvoie une valeur de type BIGINT. Cette fonction présente une erreur de 5 %.

Données d'exemple

Cette section fournit des données source d'exemple et des exemples pour vous aider à comprendre comment utiliser les fonctions. Créez une table nommée emp et insérez les données d'exemple dans la table. Exemple d'instruction :

CREATE TABLE IF NOT EXISTS emp
   (empno BIGINT,
    ename STRING,
    job STRING,
    mgr BIGINT,
    hiredate DATETIME,
    sal BIGINT,
    comm BIGINT,
    deptno BIGINT);
tunnel upload emp.txt emp;   --Replace emp.txt with the actual path (path and name) to which you upload the data file

Le fichier emp.txt contient les données d'exemple suivantes :

7369,SMITH,CLERK,7902,1980-12-17 00:00:00,800,,20
7499,ALLEN,SALESMAN,7698,1981-02-20 00:00:00,1600,300,30
7521,WARD,SALESMAN,7698,1981-02-22 00:00:00,1250,500,30
7566,JONES,MANAGER,7839,1981-04-02 00:00:00,2975,,20
7654,MARTIN,SALESMAN,7698,1981-09-28 00:00:00,1250,1400,30
7698,BLAKE,MANAGER,7839,1981-05-01 00:00:00,2850,,30
7782,CLARK,MANAGER,7839,1981-06-09 00:00:00,2450,,10
7788,SCOTT,ANALYST,7566,1987-04-19 00:00:00,3000,,20
7839,KING,PRESIDENT,,1981-11-17 00:00:00,5000,,10
7844,TURNER,SALESMAN,7698,1981-09-08 00:00:00,1500,0,30
7876,ADAMS,CLERK,7788,1987-05-23 00:00:00,1100,,20
7900,JAMES,CLERK,7698,1981-12-03 00:00:00,950,,30
7902,FORD,ANALYST,7566,1981-12-03 00:00:00,3000,,20
7934,MILLER,CLERK,7782,1982-01-23 00:00:00,1300,,10
7948,JACCKA,CLERK,7782,1981-04-12 00:00:00,5000,,10
7956,WELAN,CLERK,7649,1982-07-20 00:00:00,2450,,10
7956,TEBAGE,CLERK,7748,1982-12-30 00:00:00,1300,,10

Exemples

  • Exemple 1 : calculez le nombre approximatif de valeurs distinctes dans la colonne sal. Exemple d'instruction :

    select approx_distinct(sal) from emp;

    Le résultat suivant s'affiche :

    +-------------------+
    | numdistinctvalues |
    +-------------------+
    | 12                |
    +-------------------+
  • Exemple 2 : utilisez cette fonction avec GROUP BY pour regrouper tous les employés par département (deptno) et calculer le nombre approximatif de valeurs distinctes dans la colonne sal. Exemple d'instruction :

    select deptno, approx_distinct(sal) from emp group by deptno;

    Le résultat suivant s'affiche :

    +------------+-------------------+
    | deptno     | numdistinctvalues |
    +------------+-------------------+
    | 10         | 3                 |
    | 20         | 4                 |
    | 30         | 5                 |
    +------------+-------------------+

Fonctions associées

APPROX_DISTINCT est une fonction d'agrégation. Pour plus d'informations sur les fonctions utilisées pour calculer la valeur moyenne de plusieurs enregistrements d'entrée et pour agréger les paramètres, consultez Présentation des fonctions d'agrégation.