- Categories:
DATA_METRIC_SCHEDULED_TIME (system data metric function)¶
Returns the timestamp for when a DMF is scheduled to run or the current timestamp if the function is called manually.
You can use this DMF to define custom metrics to measure the freshness of your data or to define incremental metrics in conjunction with DMFs that already exist.
Syntax¶
SNOWFLAKE.CORE.DATA_METRIC_SCHEDULED_TIME()
Arguments¶
None.
Returns¶
The function returns a scalar value with a TIMESTAMP_LTZ data type.
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 privileges in this table 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 referenced table in the
query
.Grant the privileges in the table to the table owner role and grant these privileges to the table owner role:
IMPORTED PRIVILEGES on the SNOWFLAKE database. For information, see Enabling other roles to use schemas in the SNOWFLAKE database.
USAGE on the system DMF.
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.
Usage notes¶
Calling this function manually in a SELECT query returns the same value as the CURRENT_TIMESTAMP function.
Example¶
Create a custom data metric function to determine the data freshness on a table in the last hour:
CREATE OR REPLACE DATA METRIC FUNCTION data_freshness_hour( ARG_T TABLE (ARG_C TIMESTAMP_LTZ)) RETURNS NUMBER AS 'SELECT TIMEDIFF( minute, MAX(ARG_C), SNOWFLAKE.CORE.DATA_METRIC_SCHEDULED_TIME()) FROM ARG_T';
Call the data metric function manually:
SELECT data_freshness_hour(SELECT last_updated FROM hr.tables.empl_info) < 60;The statement returns
True
if there are no updates to the table in the last hour (60 minutes).The statement returns
False
if there were updates to the table that took place more than one hour ago.