Categories:

Data metric functions

AVG (system data metric function)¶

Returns the average value for the specified column in a table.

The AVG system data metric function is optimized to calculate the average value for a single column and provides greater performance when compared to calling the AVG function.

This topic provides the syntax for calling the function directly. To learn how to associate the function with a table or view so it runs at regular intervals, see Associate a DMF to automate data quality checks.

Syntax¶

SNOWFLAKE.CORE.AVG(<query>)
Copy

Arguments¶

query

Specifies a SQL query that projects a single column.

Allowed data types¶

The column projected by the query must have one of the following data types:

  • FLOAT

  • NUMBER

Returns¶

The function returns a NUMBER value.

Access control requirements¶

To use a system DMF, choose one of the following access control approaches:

  • Grant the DATA_METRIC_USER database role to the table owner role, which is the role with the OWNERSHIP privilege on the table. This database role has the USAGE privilege on the SNOWFLAKE.CORE schema and the USAGE privilege on all system DMFs in the SNOWFLAKE.CORE schema.

    Additionally, grant the following privileges to the table owner role:

    Privilege

    Object

    Notes

    EXECUTE DATA METRIC FUNCTION

    Account

    This privilege enables you to control which roles have access to serverless compute resources to call the system DMF.

    USAGE

    Database, schema

    These objects are the database and schema that contain the table.referenced table with which the DMF is associated.

  • Grant IMPORTED PRIVILEGES on the SNOWFLAKE database to the table owner role. For information, see Enabling other roles to use schemas in the SNOWFLAKE database.

  • Use the ACCOUNTADMIN role.

For instructions on creating a custom role with a specified set of privileges, see Creating custom roles.

For general information about roles and privilege grants for performing SQL actions on securable objects, see Overview of Access Control.

Example¶

Measure the average value for the salary column in a table:

SELECT SNOWFLAKE.CORE.AVG(
  SELECT
    salary
  FROM hr.tables.empl_info
);
Copy
+------------------------------------------------------------+
| SNOWFLAKE.CORE.AVG(SELECT salary FROM hr.tables.empl_info) |
+------------------------------------------------------------+
| 137000                                                     |
+------------------------------------------------------------+