ANY_VALUE(colname) returns a random value from a specified colname. This is an extended aggregate function in MaxCompute V2.0.
Syntax
ANY_VALUE(<colname>)Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
colname | Yes | Any | The column to sample. Rows where colname is NULL are skipped and not used for calculation. |
Return value
Same data type as colname.
Usage notes
ANY_VALUEis a MaxCompute V2.0 extended function. Ifcolnameuses any of the following data types, enable the MaxCompute V2.0 data type edition before running the query: TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP, BINARY. Session level — Add the following statement before your SQL statement and run both together:SET odps.sql.type.system.odps2=true;Project level — Run the following statement as the project owner:
setproject odps.sql.type.system.odps2=true;The setting takes effect within 10–15 minutes. For details, see Project operations and Data type editions.
If a query contains multiple aggregate functions and your project has limited compute resources, memory overflow may occur. Optimize the SQL statement or purchase additional compute resources as needed.
Sample data
The examples in the next section use the following table and data. To recreate it, run:
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 to your data fileemp.txt contents:
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,,10Examples
Example 1: Return one employee name from the entire table
SELECT ANY_VALUE(ename) FROM emp;Result:
+------------+
| _c0 |
+------------+
| SMITH |
+------------+Example 2: Return one employee name per department using `GROUP BY`
SELECT deptno, ANY_VALUE(ename) FROM emp GROUP BY deptno;Result:
+------------+------------+
| deptno | _c1 |
+------------+------------+
| 10 | CLARK |
| 20 | SMITH |
| 30 | ALLEN |
+------------+------------+What's next
ANY_VALUE is an aggregate function. For other aggregate functions such as COUNT, SUM, and AVG, see Aggregate functions.