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