指定された列にある、異なる入力値のおおよその数を返します。この関数は、MaxCompute V2.0 の追加関数です。
使用上の注意
MaxCompute V2.0 は追加機能を提供します。使用する関数が TINYINT、SMALLINT、INT、FLOAT、VARCHAR、TIMESTAMP、BINARY などの新しいデータ型を含む場合、MaxCompute V2.0 データ型エディションを有効にする文を実行する必要があります。
セッションレベル: 実行する SQL 文の前に
set odps.sql.type.system.odps2=true;を追加し、まとめてコミットおよび実行します。プロジェクトレベル: プロジェクトオーナーは、プロジェクトの要件に基づいて、プロジェクトの MaxCompute V2.0 データ型エディションを有効にできます。文:
setproject odps.sql.type.system.odps2=true;構成は 10 ~ 15 分後に有効になります。
setprojectの詳細については、「プロジェクト操作」をご参照ください。プロジェクトレベルで MaxCompute V2.0 データ型エディションを有効にする際に注意すべき事項については、「データ型エディション」をご参照ください。
複数の集計関数を含む SQL 文を使用し、プロジェクトのリソースが不足している場合、メモリ オーバーフローが発生する可能性があります。ビジネス要件に基づいて SQL 文を最適化するか、計算リソースを購入することをお勧めします。
構文
approx_distinct(<colname>)パラメーター
colname: 必須。このパラメーターは、重複を削除する列の名前を指定します。
戻り値
BIGINT 型の値が返されます。この関数は 5% の誤差を生じます。
サンプルデータ
このセクションでは、関数の使用方法を理解するためのサンプルソースデータと例を示します。emp という名前のテーブルを作成し、サンプルデータをテーブルに挿入します。サンプル文:
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; -- emp.txt を、データファイルをアップロードする実際のパス (パスと名前) に置き換えます。emp.txt ファイルには、次のサンプルデータが含まれています。
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例
例 1: sal 列にある異なる値のおおよその数を計算します。サンプル文:
select approx_distinct(sal) from emp;次の結果が返されます。
+-------------------+ | numdistinctvalues | +-------------------+ | 12 | +-------------------+例 2:
GROUP BYと共にこの関数を使用して、すべての従業員を部署 (deptno) でグループ化し、sal 列にある異なる値のおおよその数を計算します。サンプル文:select deptno, approx_distinct(sal) from emp group by deptno;次の結果が返されます。
+------------+-------------------+ | deptno | numdistinctvalues | +------------+-------------------+ | 10 | 3 | | 20 | 4 | | 30 | 5 | +------------+-------------------+
関連関数
APPROX_DISTINCT は集計関数です。 複数の入力レコードの平均値を計算し、パラメーターを集計するために使用される関数の詳細については、「集計関数」をご参照ください。