【问题标题】:How to get the record of the last query executed from snowflake query history table如何从雪花查询历史表中获取上次执行的查询的记录
【发布时间】:2021-09-29 16:54:26
【问题描述】:

在雪花中,我试图使用最新的时间戳获取最后调用的存储过程 我的代码选择了最新的存储过程,但它获取了每个调用的存储过程的最新时间戳 我究竟做错了什么?下面是我的代码

SELECT * FROM TABLE(INFORMATION_SCHEMA.query_history_by_session())
WHERE (end_time) IN 
    (SELECT MAX(end_time) 
    FROM TABLE(INFORMATION_SCHEMA.query_history_by_session()) 
    WHERE UPPER(QUERY_TEXT) LIKE 'CALL%' 
    AND UPPER(QUERY_TEXT) <> 'CALL "DB"."TK".GET_EXECUTION_ATTRIBUTES();')
ORDER BY END_TIME DESC;

【问题讨论】:

    标签: snowflake-cloud-data-platform


    【解决方案1】:

    获取最新记录可以使用ORDER BY ... DESC LIMIT 1

    SELECT *
    FROM TABLE(INFORMATION_SCHEMA.query_history_by_session()) 
    WHERE QUERY_TEXT ILIKE 'CALL%' 
      AND QUERY_TEXT NOT ILIKE 'CALL "DB"."TK".GET_EXECUTION_ATTRIBUTES();'
    ORDER BY END_TIME DESC
    LIMIT 1;
    

    对于不区分大小写的比较,建议使用ILIKE


    但它获取每个调用的存储过程

    的最新时间戳

    假设:选择了不正确的范围(即 end_time IN ( ... MAX(end_time)...)。

    可以肯定的是,建议对所有列使用显式别名:

    SELECT o.*
    FROM TABLE(INFORMATION_SCHEMA.query_history_by_session()) AS o
    WHERE (o.end_time) IN 
        (SELECT MAX(i.end_time) 
        FROM TABLE(INFORMATION_SCHEMA.query_history_by_session()) AS i
        WHERE UPPER(i.QUERY_TEXT) LIKE 'CALL%' 
        AND UPPER(i.QUERY_TEXT) <> 'CALL "DB"."TK".GET_EXECUTION_ATTRIBUTES();')
    ORDER BY o.END_TIME DESC;
    

    【讨论】:

      【解决方案2】:

      注意query_history%函数默认返回100个查询,你可以使用属性对其进行扩展 RESULT_LIMIT => 数量 并缩小时间间隔 END_TIME_RANGE_START => constant_expr END_TIME_RANGE_END => 常量表达式

      更多信息:https://docs.snowflake.com/en/sql-reference/functions/query_history.html

      如果这还不够,也许值得询问 account_usage.query_history 视图:

      USE ROLE ACCOUNTADMIN;
      SELECT *
      FROM snowflake.account_usage.query_history
      WHERE query_text ilike 'call%'
      ORDER BY END_TIME DESC
      LIMIT 100;
      

      更多信息:https://docs.snowflake.com/en/sql-reference/account-usage/query_history.html

      但请注意,查看延迟可能长达 45 分钟。

      【讨论】:

        猜你喜欢
        • 2022-01-18
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 2014-09-08
        • 2020-08-19
        • 2020-11-07
        • 2022-07-27
        • 1970-01-01
        相关资源
        最近更新 更多