Отслеживайте историю загрузки данных в Snowflake - PullRequest
0 голосов
/ 16 июня 2020

Snowflake хранит несколько наборов метаданных в своем объекте INFORMATION_SCHEMA. Я попытался выяснить, как определенная таблица c загружается процедурой / запросом.

History позволяет исследовать высокоуровневые данные, но я хотел иметь собственный код SQL для более глубокого изучения. enter image description here

После выполнения кода, приведенного ниже, я получил ошибку Statement not found, хотя Query_ID действителен. Есть ли способ перемещаться по загрузке истории, чтобы я мог отслеживать, какая процедура загружала данные в какую таблицу?

SELECT * FROM table(RESULT_SCAN('xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx'));

Ответы [ 2 ]

3 голосов
/ 16 июня 2020

подробности использования RESULT_SCAN () можно найти по приведенной ниже ссылке, обратите внимание, что эти два условия могут повлиять на вашу способность выполнять запрос:

  • запрос не может быть выполнен более 24 часов до использования RESULT_SCAN ()
  • только пользователь, выполнивший исходный запрос, может использовать RESULT_SCAN ()

https://docs.snowflake.com/en/sql-reference/functions/result_scan.html#usage -notes

Что касается «перемещаться по загрузке истории, чтобы я мог отслеживать, какая процедура загружала данные в какую таблицу?» : Я настоятельно рекомендую вам провести анализ в представлении SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY. Хорошей отправной точкой может быть что-то вроде этого:

SELECT *
FROM   snowflake.account_usage.query_history
WHERE  start_time >= DATEADD('days', -30, CURRENT_TIMESTAMP())
AND    start_time <= date_trunc(HOUR, CURRENT_TIMESTAMP())
AND    query_text iLike '%TABLE_NAME_HERE%'
AND    query_type <> 'SELECT';

https://docs.snowflake.com/en/sql-reference/account-usage/query_history.html

Если вы подозреваете, что рассматриваемая таблица была загружена с помощью команды COPY INTO table , было бы разумно начать с просмотра результатов в одном из следующих двух представлений:

Хотя просмотры в «share» account_usage могут иметь некоторую задержку (обычно 10-20 минут, может быть столько же как 90 минут), я обнаружил, что использовать их для анализа, как вы, проще, чем запрашивать объекты INFORMATION_SCHEMA (мнение).

Надеюсь, это поможет ... Rich

0 голосов
/ 16 июня 2020

Если вы используете sh для просмотра самой последней истории запросов, вы можете использовать следующий синтаксис:

SELECT *
FROM TABLE(information_schema.QUERY_HISTORY())
WHERE QUERY_ID = 'xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx'

Для фильтрации запросов загрузки данных:

SELECT *
FROM TABLE(information_schema.QUERY_HISTORY())
WHERE QUERY_TEXT LIKE '%COPY INTO%'

Совет: Приведенные выше табличные функции возвращают данные за последние 7 дней. Если вам требуется дополнительная история, используйте представления использования учетной записи. Совет: чтобы использовать просмотры истории учетной записи, переключитесь на роль AccountAdmin. https://docs.snowflake.com/en/sql-reference/account-usage/query_history.html

Rgds,

Dan.

...