This topic describes the syntax of approximate functions. This topic also provides examples on how to use the functions.

Function Syntax Description
approx_distinct function approx_distinct(x) Estimates the number of unique values in a specified field. The standard error is 2.3%.
numeric_histogram function numeric_histogram(bucket,x) Computes the approximate histogram of a specified field based on the number of histogram columns specified by the bucket parameter. The returned result is of the JSON type.
numeric_histogram_u function numeric_histogram_u(bucket,x) Computes the approximate histogram of a specified field based on the number of histogram columns specified by the bucket parameter. A table that includes multiple rows and columns is returned.
approx_percentile function approx_percentile(x,percentage) Lists the values of a specified field in ascending order and returns the value that is approximately at the percentage position.
approx_percentile(x,array[percentage01,percentage02...]) Lists the values of a specified field in ascending order and returns the values that are approximately at the percentage01 and percentage02 positions.

approx_distinct function

The approx_distinct function is used to estimate the number of unique values in a specified field. The standard error is 2.3%.

Syntax

``approx_distinct(x)``

Parameters

Parameter Description
x The value of this parameter is of the arbitrary data type.

The bigint type.

Examples

Use the count function to calculate the number of page views (PVs), and then use the approx_distinct function to estimate the unique values of the client_ip field as the number of unique visitors (UVs).

• Query statement
``* |SELECT count(*) AS PV, approx_distinct(client_ip) AS UV``
• Query and analysis result

numeric_histogram function

The numeric_histogram function is used to compute the approximate histogram of a specified field based on the number of histogram columns specified by the bucket parameter. The returned result is of the JSON type.

Syntax

``numeric_histogram(bucket,x)``

Parameters

Parameter Description
bucket The number of columns in the histogram. The value of this parameter is of the bigint type.
x The value of this parameter is of the double type.

The JSON type.

Examples

Compute the approximate histogram of the request duration for the POST method.

• Query statement
``request_method:POST | SELECT numeric_histogram(10,request_time)``
• Query and analysis result

numeric_histogram_u function

The numeric_histogram_u function is used to compute the approximate histogram of a specified field based on the number of histogram columns specified by the bucket parameter. A table that includes multiple rows and columns is returned.

Syntax

``numeric_histogram_u(bucket,x)``

Parameters

Parameter Description
bucket The number of columns in the histogram. The value of this parameter is of the bigint type.
x The value of this parameter is of the double type.

The double type.

Examples

Compute the approximate histogram of the request duration for the POST method.

• Query statement
``request_method:POST | select numeric_histogram_u(10,request_time)``
• Query and analysis result

approx_percentile function

The approx_percentile function is used to list the values of a specified field in ascending order, and then return the value that is approximately at the percentage position.

Syntax

• To return the value that is approximately at the percentage position, use the following syntax. The returned result is of the double type.
``approx_percentile(x,percentage)``
• To return the values that are approximately at the percentage01 and percentage02 positions, use the following syntax. The returned result is of the array type.
``approx_percentile(x,array[percentage01,percentage02...])``

Parameters

Parameter Description
x The value of this parameter is of the double type.
percentage The percentage value. Value range: [0,1].

Return value type

The double type or array type.

Examples

• Example 1: Sort the values of the request_time column in ascending order, and then return the value that is approximately at the 50% position in the request_time field.
• Query statement
``*| select approx_percentile(request_time,0.5)``
• Query and analysis result
• Example 2: Sort the values of the request_time column in ascending order, and then return the values that are approximately at the 10%, 20%, and 70% positions in the request_time field.
• Query statement
``*| select approx_percentile(request_time,array[0.1,0.2,0.7])``
• Query and analysis result