Upsolver
Search…
APPROX_COUNT_DISTINCT
The approximate number of distinct values in the time window. Use this function instead of COUNT_DISTINCT to improve performance. This should be used when there are relatively few (under 1 million) rows, and where the total number of distinct values is high.

Syntax

APPROX_COUNT_DISTINCT(VALUE)

Arguments

VALUE: Can be of any type

Returns

An integer.

Notes

Duplicate rows are not counted. NULLs are not counted.

Example

Data

1
[
2
{
3
"GROUP_ID":"G1",
4
"USER_ID":"U1",
5
"CONNECTION_TIME":"2020-06-26 02:31:29,573"
6
},
7
{
8
"GROUP_ID":"G1",
9
"USER_ID":"U2",
10
"CONNECTION_TIME":"2020-06-26 18:11:45,783"
11
},
12
{
13
"GROUP_ID":"G2",
14
"USER_ID":"Z1",
15
"CONNECTION_TIME":"2020-06-26 23:54:27,687"
16
},
17
{
18
"GROUP_ID":"G2",
19
"CONNECTION_TIME":"2020-07-26 23:54:27,687"
20
},
21
{
22
"GROUP_ID":"G1",
23
"USER_ID":"U2",
24
"CONNECTION_TIME":"2021-07-01 02:31:29,573"
25
},
26
{
27
"GROUP_ID":"G1",
28
"USER_ID":"U1",
29
"CONNECTION_TIME":"2021-07-01 18:11:45,783"
30
},
31
{
32
"GROUP_ID":"G2",
33
"USER_ID":"Z1",
34
"CONNECTION_TIME":"2021-07-01 23:54:27,687"
35
}
36
]
Copied!

Query

Count the number of distinct entries for each unique entry in a field:
1
SET
2
DATE_TIME = TO_DATE(data.CONNECTION_TIME);
3
SELECT
4
APPROX_COUNT_DISTINCT(data.USER_ID)
5
AS approx_count_distinct_data_user_id:BIGINT,
6
data.GROUP_ID AS group_id:STRING
7
FROM
8
"SAMPLE_DATA_G1U1 - json"
9
GROUP BY
10
data.GROUP_ID
Copied!

Results

1
{
2
"count_distinct_data_user_id":1,
3
"group_id":"G2"
4
}{
5
"count_distinct_data_user_id":2,
6
"group_id":"G1"
7
}
Copied!

Dialog