Tous les produits
Search
Centre de documentation

MaxCompute:APPROX_DISTINCT

Dernière mise à jour :Sep 16, 2026

Renvoie le nombre approximatif de valeurs distinctes d'une colonne spécifiée. Cette fonction est une fonction supplémentaire de MaxCompute V2.0.

Notes d'utilisation

  • MaxCompute V2.0 propose de nouvelles fonctions étendues. Si les fonctions utilisées 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 :

    • Niveau session : ajoutez SET odps.sql.type.system.odps2=true; avant l'instruction SQL à exécuter, puis soumettez et exécutez le tout ensemble.

    • Niveau projet : le propriétaire du projet peut activer l'édition des types de données MaxCompute V2.0 pour le projet selon ses 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 Opérations relatives aux projets. Pour connaître 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 des types de données.

  • L'utilisation d'une instruction SQL contenant plusieurs fonctions d'agrégation avec des ressources de projet insuffisantes peut provoquer un dépassement de mémoire. Nous vous recommandons d'optimiser l'instruction SQL ou d'acheter des ressources de calcul supplémentaires si nécessaire.

Syntaxe

approx_distinct(<colname>)

Paramètres

colname : obligatoire. 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 %.

Exemple de données

Cette section fournit des données source d'exemple et des illustrations pour vous aider à comprendre comment utiliser les fonctions. Créez une table nommée emp et insérez-y les données d'exemple. 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 permettant de calculer la valeur moyenne de plusieurs enregistrements d'entrée et d'agréger les paramètres, consultez Présentation des fonctions d'agrégation.