このドキュメントでは、分析ビューと、分析ビューを作成するタイミングについて説明します。また、分析ビューと、保存済みクエリやログビューなど、よく知られているコンセプトの違いについても説明します。
概要
分析ビューはクエリ可能なリソースです。つまり、分析ビューを定義したら、FROM
句で分析ビューを指定するクエリを作成できます。
分析ビューを使用する主なメリットは、API やシステムが定義する形式でデータをクエリする必要がないことです。分析ビューを使用すると、スキーマを定義できます。これにより、クエリを簡素化したり、クエリの作成に費やす時間を短縮したりできます。分析ビューのクエリでは、特定のフィールドのみを保持する、フィールドの名前を変更する、ネストされたフィールドを最上位の列に移動する、グループ化と集計を実行するなどの操作を行うことができます。
分析ビューはマテリアライズド ビューではありません。分析ビューは、クエリ結果を定期的にキャッシュに保存する事前計算ビューではありません。したがって、分析ビューをクエリすることは、分析ビューのクエリにリストされているビューをクエリすることと同等です。
分析ビューは、保存済みクエリよりも強力です。保存済みクエリは、[ログ分析] ページで実行して保存したクエリです。保存済みクエリは再実行できますが、保存済みクエリの結果をクエリすることはできません。
分析ビューの種類
分析ビューには、ユーザー定義とシステム定義の 2 種類があります。
ユーザー定義の分析ビューとは、ユーザーが作成した分析ビューです。ユーザー定義の分析ビューに対してクエリを実行したり、編集や削除を行うことができます。
システム定義の分析ビューは、Google Cloud サービスによって作成される分析ビューです。システム定義の分析ビューに対してクエリを実行できます。ただし、編集や削除はできません。
Google Cloud プロジェクト内の分析ビューを一覧表示する方法については、分析ビューを一覧表示するをご覧ください。
分析ビューのロケーション
分析ビューのロケーションは、クエリするリソースのロケーションによって決まります。たとえば、アナリティクス ビューが global
ロケーションにあるログビューをクエリする場合、アナリティクス ビューのロケーションも global
にする必要があります。 Google Cloud コンソールを使用して分析ビューを作成すると、ロケーションが自動的に設定されます。
サンプル ユースケース
分析ビューの主な利点は、システムが定義した形式でデータをクエリする必要がないことです。分析ビューを使用すると、スキーマを定義して、クエリを簡素化したり、クエリの作成に費やす時間を短縮したりできます。
ネットワークの詳細に関するクエリ
VPC Flow Logs を使用してネットワーク パフォーマンスを分析したい。全体的なネットワーキング パフォーマンスを分析し、特定のネットワーク、IP アドレス、ホストを確認する必要があります。この情報は、ログエントリの json_payload
フィールドのネストされたフィールドに保存されます。
分析クエリを簡素化するために、次の分析ビューを作成して network_details
という名前を付けます。
SELECT
-- Create a column for each network field.
JSON_VALUE(resource.labels.subnetwork_name) subnetwork_name,
JSON_VALUE(json_payload.src_instance.vm_name) vm_name,
JSON_VALUE(json_payload.connection.src_ip) as src_ip,
JSON_VALUE(json_payload.connection.src_port) as src_port,
JSON_VALUE(json_payload.connection.dest_ip) as dest_ip,
JSON_VALUE(json_payload.connection.dest_port) as dest_port,
CAST(JSON_VALUE(json_payload.bytes_sent) as INT64) as bytes_sent,
CAST(JSON_VALUE(json_payload.packets_sent) as INT64) as packets_sent
FROM
-- Query one log view.
`PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID`
WHERE
-- Only query the VPC Flow Logs log.
log_id = "compute.googleapis.com/vpc_flows"
AND SEARCH(json_payload.reporter, "SRC")
クエリを使用する前に、次の変数の値を設定します。
- PROJECT_ID: プロジェクトの ID。
- LOCATION: ログビューのロケーション。
- BUCKET_ID: ログバケットの名前または ID。
- LOG_VIEW_ID: ログビューの ID。100 文字に制限され、英字、数字、アンダースコア、ハイフンのみを使用できます。
ネットワーク パフォーマンスを分析する場合は、分析ビューをクエリします。たとえば、インスタンスの名前と送信されたデータの量のみに関心がある場合は、次のクエリを作成します。
SELECT vm_name, bytes_sent, packets_sent,
FROM `analytics_view.my_project.global.network_details`
ORDER BY bytes_sent DESC
LIMIT 100
API レイテンシ分析のベースクエリ
複数のチームが分析を完了するために週次のパフォーマンス データを必要としています。各チームが週次データを生成する代わりに、週次データを抽出する分析ビューを作成します。他のチームは分析ビューをクエリして、分析を実行できます。
次のクエリは、SQL を使用して最小、最大、平均リクエスト レイテンシを計算する方法を示しています。
SELECT week, MIN(took_ms) as min, MAX(took_ms) AS max, AVG(took_ms) AS avg
FROM (
SELECT TIMESTAMP_TRUNC(timestamp, WEEK) AS week,
CAST( JSON_VALUE(json_payload, '$."http.resp.took_ms"') AS INT64) as took_ms
FROM
-- Query one log view.
`PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID`
WHERE json_payload IS NOT NULL
AND SEARCH(labels,"frontend")
AND JSON_VALUE(json_payload.message) = "request complete"
ORDER BY took_ms DESC, timestamp ASC
)
GROUP BY week ORDER BY week
制限事項
分析ビューには次の制限が適用されます。
- 分析ビューでクエリできるのはログビューのみです。
- 分析ビューの親リソースは Google Cloud プロジェクトである必要があります。
- 分析ビューをクエリできるのは、[ログ分析] ページを使用する場合のみです。また、[ログ分析(デフォルト)] クエリエンジンを使用する場合のみです。
- アナリティクス ビューがクエリするすべてのビューは、同じロケーションに存在する必要があります。
- 分析ビューを作成または管理するには、 Google Cloud コンソールを使用する必要があります。
- Google Cloud プロジェクトあたり最大 100 個の分析ビューを作成できます。
- リージョンごとに最大 50 個のアナリティクス ビューを作成できます。
- 1 つの Google Cloud プロジェクトで分析ビューを含めることができるリージョンは最大 10 個です。