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 BYpour 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.