Retorna o número aproximado de valores distintos de entrada em uma coluna especificada. Esta é uma função adicional do MaxCompute V2.0.
Observações de uso
-
O MaxCompute V2.0 oferece novas funções estendidas. Se as funções utilizadas envolverem novos tipos de dados, como TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP e BINARY, será necessário executar um comando para habilitar a edição de tipos de dados do MaxCompute V2.0:
Nível de sessão: Adicione
SET odps.sql.type.system.odps2=true;antes da instrução SQL que deseja executar e envie ambas para execução conjunta.-
Nível de projeto: O proprietário do projeto pode habilitar a edição de tipos de dados do MaxCompute V2.0 conforme as necessidades do projeto. Comando:
setproject odps.sql.type.system.odps2=true;A configuração entra em vigor após 10 a 15 minutos.
Para mais informações sobre
setproject, consulte Comandos de projeto. Para detalhes sobre os cuidados necessários ao habilitar a edição de tipos de dados do MaxCompute V2.0 no nível do projeto, veja Guia de versão de tipos de dados.
Se você utilizar uma instrução SQL com múltiplas funções de agregação e os recursos do projeto forem insuficientes, pode ocorrer estouro de memória. Recomendamos otimizar a instrução SQL ou adquirir recursos computacionais adicionais, conforme necessário.
Sintaxe
approx_distinct(<colname>)
Parâmetros
colname: obrigatório. Este parâmetro especifica o nome da coluna da qual os valores duplicados devem ser removidos.
Valor retornado
Retorna um valor do tipo BIGINT. Esta função apresenta uma margem de erro de 5%.
Dados de exemplo
Esta seção fornece dados de origem de exemplo e casos práticos para ajudar você a entender como usar as funções. Crie uma tabela chamada emp e insira os dados de exemplo nela. Comando de exemplo:
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
O arquivo emp.txt contém os seguintes dados de exemplo:
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
Exemplos
-
Exemplo 1: Calcular o número aproximado de valores distintos na coluna sal. Comando de exemplo:
select approx_distinct(sal) from emp;O seguinte resultado é retornado:
+-------------------+ | numdistinctvalues | +-------------------+ | 12 | +-------------------+ -
Exemplo 2: Usar esta função com
GROUP BYpara agrupar todos os funcionários por departamento (deptno) e calcular o número aproximado de valores distintos na coluna sal. Comando de exemplo:select deptno, approx_distinct(sal) from emp group by deptno;O seguinte resultado é retornado:
+------------+-------------------+ | deptno | numdistinctvalues | +------------+-------------------+ | 10 | 3 | | 20 | 4 | | 30 | 5 | +------------+-------------------+
Funções relacionadas
APPROX_DISTINCT é uma função de agregação. Para mais informações sobre funções usadas para calcular a média de múltiplos registros de entrada e agregar parâmetros, consulte Visão geral das funções de agregação.