スキーマ:

ACCOUNT_USAGE

AGGREGATE_QUERY_HISTORY ビュー

このAccount Usageビューでは、ステートメントの実行を長期にわたってモニターし、追跡することができます。QUERY_HISTORY ビューと同様のデータが含まれていますが、繰り返しの SQL ステートメントについては1分間隔で集計されます。このビューを使用して、ワークロードをモニターし、パフォーマンスを分析することができます。

ハイブリッドテーブルに対するクエリに加えて、Snowflakeで実行するすべてのクエリが AGGREGATE_QUERY_HISTORY に含まれます。しかし、 AGGREGATE_QUERY_HISTORY は特に、少数の異なるステートメントを高いスループットで繰り返し実行するUnistoreワークロードのモニターと分析に役立ちます。

列名

データ型

説明

CALLS

NUMBER

集計区間でステートメント(クエリおよびクエリプラン)が実行された回数。

INTERVAL_START_TIME

TIMESTAMP_LTZ

測定ウィンドウの開始時間(ローカルタイムゾーン)。

INTERVAL_END_TIME

TIMESTAMP_LTZ

測定ウィンドウの終了時間(ローカルタイムゾーン)。

QUERY_PARAMETERIZED_HASH

TEXT

同一のパラメーター化されたクエリを識別するための一意の ID。 QUERY_PARAMETERIZED_HASH 列 をご参照ください。

QUERY_TEXT

TEXT

SQL ステートメントのサンプルテキスト。

DATABASE_ID

NUMBER

使用されていたデータベースの内部/システム生成識別子。

DATABASE_NAME

TEXT

クエリ時に使用されていたデータベース。

SCHEMA_ID

NUMBER

使用されていたスキーマの内部/システム生成識別子。

SCHEMA_NAME

TEXT

クエリ時に使用されていたスキーマ。

QUERY_TYPE

TEXT

DML、クエリなど。クエリに失敗した場合、クエリ型は UNKNOWN になります。

SESSION_ID

NUMBER

ステートメントを実行したセッション。

USER_NAME

TEXT

クエリを発行したユーザー。

ROLE_NAME

TEXT

クエリの時点でセッションでアクティブだったロール。

ROLE_TYPE

TEXT

クエリを実行した APPLICATIONDATABASE_ROLEROLE のいずれかを指定します。

WAREHOUSE_ID

NUMBER

使用されていたウェアハウスの内部/システム生成識別子。

WAREHOUSE_NAME

TEXT

クエリが実行されたウェアハウス(ある場合)。

WAREHOUSE_SIZE

TEXT

このステートメントが実行されたときのウェアハウスのサイズ。

WAREHOUSE_TYPE

TEXT

このステートメントが実行されたときのウェアハウスのタイプ。

QUERY_TAG

TEXT

QUERY_TAG セッションパラメーターを介してこのステートメントに設定されたクエリタグ。

IS_CLIENT_GENERATED_STATEMENT

BOOLEAN

クエリがクライアントによって生成されたかどうかを示します。

RELEASE_VERSION

TEXT

major_release.minor_release.patch_release の形式のリリースバージョン。

ERRORS

ARRAY

集計区間中に発生したエラーコードとメッセージのリスト。各エラーは {"code": "code1", "message": "msg1", "count": 10} の形式になります。

TOTAL_ELAPSED_TIME

OBJECT

経過時間(ミリ秒単位)。

BYTES_SCANNED

OBJECT

このステートメントによってスキャンされたバイト数。

PERCENTAGE_SCANNED_FROM_CACHE

OBJECT

ローカルディスクキャッシュからスキャンされたデータの割合。値は0.0〜1.0の範囲です。真のパーセントを得るために、100を掛けます。

BYTES_WRITTEN

OBJECT

書き込まれたバイト数(例:テーブルへのロード時)。

BYTES_WRITTEN_TO_RESULT

OBJECT

結果オブジェクトに書き込まれるバイト数。たとえば、 select * from . . . は、選択範囲の各フィールドを表す表形式の結果のセットを生成します。 . . 一般に、結果オブジェクトはクエリの結果として生成されたものを表し、 BYTES_WRITTEN_TO_RESULT は返された結果のサイズを表します。

BYTES_READ_FROM_RESULT

OBJECT

結果オブジェクトから読み取ったバイト数。

ROWS_PRODUCED

OBJECT

このステートメントによって生成された行の数。

ROWS_INSERTED

OBJECT

クエリによって挿入された行の数。

ROWS_UPDATED

OBJECT

クエリによって更新された行の数。

ROWS_DELETED

OBJECT

クエリによって削除された行の数。

ROWS_UNLOADED

OBJECT

データのエクスポート中にアンロードされた行の数。

BYTES_DELETED

OBJECT

クエリによって削除されたバイト数。

PARTITIONS_SCANNED

OBJECT

スキャンされたマイクロパーティションの数。

PARTITIONS_TOTAL

OBJECT

このクエリに含まれるすべてのテーブルのマイクロパーティション合計。

BYTES_SPILLED_TO_LOCAL_STORAGE

OBJECT

ローカルディスクにスピルしたデータの量。

BYTES_SPILLED_TO_REMOTE_STORAGE

OBJECT

リモートディスクにスピルしたデータの量。

BYTES_SENT_OVER_THE_NETWORK

OBJECT

ネットワーク経由で送信されたデータの量。

COMPILATION_TIME

OBJECT

コンパイル時間(ミリ秒単位)

EXECUTION_TIME

OBJECT

実行時間(ミリ秒単位)

QUEUED_PROVISIONING_TIME

OBJECT

ウェアハウスの作成、再開、またはサイズ変更のために、ウェアハウスコンピューティングリソースでのプロビジョニングを待機する、ウェアハウスキューで費やされた時間(ミリ秒単位)。

QUEUED_REPAIR_TIME

OBJECT

ウェアハウス内のコンピューティングリソースの修復を待機する、ウェアハウスキュー内で費やされた時間(ミリ秒単位)。

QUEUED_OVERLOAD_TIME

OBJECT

ウェアハウスが現在のクエリワークロードによって過負荷になっているために、ウェアハウスキューで費やされた時間(ミリ秒)。

TRANSACTION_BLOCKED_TIME

OBJECT

同時 DMLによってブロックされた時間(ミリ秒)。

OUTBOUND_DATA_TRANSFER_CLOUD

TEXT

データを別の地域やクラウドにアンロードするステートメントのターゲットクラウドプロバイダー。

OUTBOUND_DATA_TRANSFER_REGION

TEXT

データを別のリージョンやクラウドにアンロードするステートメントのターゲットリージョン。

OUTBOUND_DATA_TRANSFER_BYTES

OBJECT

別の地域やクラウドにデータをアンロードするステートメントで転送されたバイト数。

INBOUND_DATA_TRANSFER_CLOUD

TEXT

別の地域やクラウドからデータをロードするステートメントのソースクラウドプロバイダー。

INBOUND_DATA_TRANSFER_REGION

TEXT

別の地域やクラウドからデータをロードするステートメントのソース地域。

INBOUND_DATA_TRANSFER_BYTES

OBJECT

他のアカウントからの複製操作で転送されたバイト数。ソースアカウントは、現在のアカウントと同じリージョンにある場合もあれば、異なるリージョンにある場合もあります。

LIST_EXTERNAL_FILES_TIME

OBJECT

外部ファイルのリストに費やされた時間(ミリ秒単位)。

CREDITS_USED_CLOUD_SERVICES

OBJECT

クラウドサービスのために使用されたクレジットの数。

EXTERNAL_FUNCTION_TOTAL_INVOCATIONS

OBJECT

このクエリがリモートサービスを呼び出した回数の合計。重要な詳細については、使用上の注意をご参照ください。

EXTERNAL_FUNCTION_TOTAL_SENT_ROWS

OBJECT

このクエリが、すべてのリモートサービスに対してすべての呼び出しで送信した行の総数。

EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS

OBJECT

このクエリが、すべてのリモートサービスに対してすべての呼び出しから受信した行の総数。

EXTERNAL_FUNCTION_TOTAL_SENT_BYTES

OBJECT

このクエリが、すべてのリモートサービスに対してすべての呼び出しで送信したバイトの総数。

EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES

OBJECT

このクエリが、すべてのリモートサービスに対してすべての呼び出しから受信したバイトの総数。

QUERY_LOAD_PERCENT

OBJECT

このクエリ実行に対するウェアハウス内のアクティブなコンピューティングリソースのおおよその割合。

QUERY_ACCELERATION_BYTES_SCANNED

OBJECT

Query Acceleration Service によってスキャンされたバイト数。

QUERY_ACCELERATION_PARTITIONS_SCANNED

OBJECT

Query Acceleration Serviceによってスキャンされたパーティションの数。

QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR

OBJECT

クエリが受けたであろうメリット の上限 スケールファクター

CHILD_QUERIES_WAIT_TIME

OBJECT

メモ化可能な関数 を呼び出すときに、キャッシュされたルックアップが完了するまでの時間(ミリ秒単位)。

HYBRID_TABLE_REQUESTS_THROTTLED_COUNT

NUMBER

スロットリングされたハイブリッドテーブルクエリの数。

OWNER_ROLE_TYPE

TEXT

オブジェクトを所有するロールのタイプ、 ROLE または DATABASE_ROLE のいずれか。 . Snowflake Native App がオブジェクトを所有する場合、値は APPLICATION になります。 . 削除されたオブジェクトには所有者ロールがないため、オブジェクトを削除した場合、Snowflakeは NULL を返します。

OBJECT データ型には以下のフィールドが含まれます。

フィールド名

説明

sum

集計区間内の全実行における合計。

avg

集計区間内の全実行における平均。

stddev

集計区間内の全実行における標準偏差。

min

集計区間内の全実行における最小値。

median

集計区間内の全実行における中央値。

p90

集計区間内の全実行における90パーセンタイル。

p99

集計区間内の全実行における99パーセンタイル。

p99.9

集計区間内の全実行における99.9パーセンタイル。

max

集計区間内の全実行における最大値。

注釈

以下の OBJECT 型の列には sum フィールドは含まれません。

  • PERCENTAGE_SCANNED_FROM_CACHE

  • QUERY_LOAD_PERCENT

  • QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR

QUERY_PARAMETERIZED_HASH 列

QUERY_PARAMETERIZED_HASH 列には、パラメーター化されたクエリに基づいて計算されたハッシュ値が含まれます。これは、すべてのリテラルをパラメーター化した後のクエリのバージョンを意味します。

たとえば、以下のクエリは同じ QUERY_PARAMETERIZED_HASH 値を持ちます。

SELECT * FROM table1 WHERE table1.name = 'TIM'
Copy
SELECT * FROM table1 WHERE table1.name = 'AIHUA'
Copy

QUERY_PARAMETERIZED_HASH 値には以下の制約があります。

  • 定数リテラルは、述語に対する以下のバイナリ関数の中になければなりません: equal、not equal、 greater (or equal) than、smaller (or equal) than。

  • エイリアスは同じでなければなりません。

SQL のテキストに違いがある限り、以下の例外を除いて QUERY_HASH と QUERY_PARAMETERIZED_HASH の値は異なります。

  • 識別子/セッション変数/ステージ名の大文字と小文字は区別されません。

  • 空白の違いは無視されます。

  • リテラルは前述のバイナリ述語規則を満たします。

使用上の注意

ビューの待機時間は最大180分(3時間)です。

AGGREGATE_QUERY_HISTORY ビューを使用して、エラー、キューイング、ロックブロッキング、ハイブリッドテーブルスロットルなどの潜在的な問題をモニターすることができます。通常、これらのメトリックは一貫して低いことが望まれます。これらのメトリックのいずれかが急上昇した場合は、問題のある可能性があります。

SET (START_DATE, END_DATE) = ('2023-11-01', '2023-11-08');

WITH time_issues AS
(
    SELECT
        interval_start_time
        , SUM(transaction_blocked_time:"sum") AS transaction_blocked_time
        , SUM(queued_provisioning_time:"sum") AS queued_provisioning_time
        , SUM(queued_repair_time:"sum") AS queued_repair_time
        , SUM(queued_overload_time:"sum") AS queued_overload_time
        , SUM(hybrid_table_requests_throttled_count) AS hybrid_table_requests_throttled_count
    FROM snowflake.account_usage.aggregate_query_history
    WHERE TRUE
        AND interval_start_time > $START_DATE
        AND interval_start_time < $END_DATE
    GROUP BY ALL
),
errors AS
(
    SELECT
        interval_start_time
        , SUM(value:"count") as error_count
    FROM
    (
        SELECT
            a.interval_start_time
            , e.*
        FROM
            snowflake.account_usage.aggregate_query_history a,
            TABLE(FLATTEN(input => errors)) e
        WHERE TRUE
            AND interval_start_time > $START_DATE
            AND interval_start_time < $END_DATE
    )
    GROUP BY ALL
)
SELECT
    time_issues.interval_start_time
    , error_count
    , transaction_blocked_time
    , queued_provisioning_time
    , queued_repair_time
    , queued_overload_time
    , hybrid_table_requests_throttled_count
FROM
    time_issues FULL JOIN errors ON errors.interval_start_time = time_issues.interval_start_time
;
Copy

ビューにクエリを実行することで、ワークロード全体のスループットと同時実行性をモニターすることができます。多くのワークロードには、規則的な周期パターンがあります。予期しない上昇や下降があれば、調査する価値があるかもしれません。

たとえば、11月第1週のウェアハウス my_warehouse のスループットと同時実行性をモニターするとします。

SELECT
    interval_start_time
    , SUM(calls) AS execution_count
    , SUM(calls) / 60 AS queries_per_second
    , COUNT(DISTINCT session_id) AS unique_sessions
    , COUNT(user_name) AS unique_users
FROM snowflake.account_usage.aggregate_query_history
WHERE TRUE
    AND warehouse_name = 'MY_WAREHOUSE'
    AND interval_start_time > '2023-11-01'
    AND interval_start_time < '2023-11-08'
GROUP BY
    interval_start_time
;
Copy

最も一般的で頻繁に繰り返されるクエリは、ワークロードの最適化または効率化のために集中的に取り組むのに適しています。ビューにクエリを実行することで、ワークロードの実行回数が上位のクエリを識別することができます。

たとえば、ウェアハウス my_warehouse の実行回数が上位のクエリを識別するとします。

SELECT
    query_parameterized_hash
    , ANY_VALUE(query_text)
    , SUM(calls) AS execution_count
FROM snowflake.account_usage.aggregate_query_history
WHERE TRUE
    AND warehouse_name = 'MY_WAREHOUSE'
    AND interval_start_time > '2023-11-01'
    AND interval_start_time < '2023-11-08'
GROUP BY
    query_parameterized_hash
ORDER BY execution_count DESC
;
Copy

平均合計遅延時間が最も遅いクエリを識別するには

SELECT
    query_parameterized_hash
    , any_value(query_text)
    , SUM(total_elapsed_time:"sum"::NUMBER) / SUM (calls) as avg_latency
FROM snowflake.account_usage.aggregate_query_history
WHERE TRUE
    AND warehouse_name = 'MY_WAREHOUSE'
    AND interval_start_time > '2023-07-01'
    AND interval_start_time < '2023-07-08'
GROUP BY
    query_parameterized_hash
ORDER BY avg_latency DESC
;
Copy

興味のある特定のクエリについてパフォーマンスを経時的に分析するには

SELECT
    interval_start_time
    , total_elapsed_time:"avg"::number avg_elapsed_time
    , total_elapsed_time:"min"::number min_elapsed_time
    , total_elapsed_time:"p90"::number p90_elapsed_time
    , total_elapsed_time:"p99"::number p99_elapsed_time
    , total_elapsed_time:"max"::number max_elapsed_time
FROM snowflake.account_usage.aggregate_query_history
WHERE TRUE
    AND query_parameterized_hash = '<123456>'
    AND interval_start_time > '2023-07-01'
    AND interval_start_time < '2023-07-08'
ORDER BY interval_start_time DESC
;
Copy