분석 뷰 정보

이 문서에서는 분석 뷰와 분석 뷰를 만들 시점을 설명합니다. 또한 분석 뷰와 익숙할 수 있는 개념(예: 저장된 쿼리, 로그 뷰)의 차이점도 설명합니다.

개요

분석 뷰는 쿼리할 수 있는 리소스입니다. 즉, 분석 뷰를 정의한 후 FROM 절에서 분석 뷰를 지정하는 쿼리를 작성할 수 있습니다.

분석 뷰를 사용하면 API 또는 시스템에서 정의한 형식으로 데이터를 쿼리하지 않아도 된다는 것이 가장 큰 이점입니다. 분석 뷰를 사용하면 스키마를 정의할 수 있으므로 쿼리를 단순화하거나 쿼리 작성에 드는 시간을 줄일 수 있습니다. 분석 뷰의 쿼리는 특정 필드만 유지하고, 필드 이름을 바꾸고, 중첩된 필드를 최상위 열로 이동하고, 그룹화 및 집계를 실행하는 등의 작업을 할 수 있습니다.

분석 뷰는 구체화된 뷰가 아닙니다. 분석 뷰는 쿼리 결과를 주기적으로 캐시하는 미리 계산된 뷰가 아닙니다. 따라서 분석 뷰를 쿼리하는 것은 분석 뷰의 쿼리에 나열된 뷰를 쿼리하는 것과 같습니다.

분석 뷰는 로그 애널리틱스 페이지에서 실행한 후 저장하는 쿼리인 저장된 쿼리보다 강력합니다. 저장된 쿼리는 다시 실행할 수 있지만 저장된 쿼리 결과를 쿼리할 수는 없습니다.

분석 뷰 유형

분석 뷰에는 사용자 정의 뷰 및 시스템 정의 뷰 등 두 가지 유형이 있습니다.

  • 사용자 정의 분석 뷰는 개발자가 만드는 모든 분석 뷰입니다. 사용자 정의 분석 뷰를 쿼리, 수정, 삭제할 수 있습니다.

  • 시스템 정의 분석 뷰는Google Cloud 서비스에서 만든 분석 뷰입니다. 시스템 정의 분석 뷰를 쿼리할 수 있습니다. 하지만 수정하거나 삭제할 수는 없습니다.

Google Cloud 프로젝트에서 분석 뷰를 나열하는 방법은 분석 뷰 나열을 참고하세요.

분석 뷰 위치

분석 뷰 위치는 쿼리하는 리소스의 위치에 따라 결정됩니다. 예를 들어 분석 뷰가 global 위치에 있는 로그 뷰를 쿼리하는 경우 분석 뷰의 위치도 global여야 합니다. Google Cloud 콘솔을 사용하여 분석 뷰를 만들면 위치가 자동으로 설정됩니다.

사용 사례

분석 뷰의 주요 이점은 시스템에서 정의한 형식으로 데이터를 쿼리하는 데 제한이 없다는 점입니다. 분석 뷰를 사용하면 스키마를 정의할 수 있으므로 쿼리를 간소화하거나 쿼리 작성에 소요되는 시간을 줄일 수 있습니다.

네트워크 세부정보 쿼리

VPC 흐름 로그를 사용하여 네트워크 성능을 분석하려고 합니다. 전반적인 네트워킹 성능을 분석하고 특정 네트워크, 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: 프로젝트 식별자
  • LOCATION: 로그 뷰의 위치입니다.
  • BUCKET_ID: 로그 버킷의 이름 또는 ID
  • LOG_VIEW_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개의 분석 보기를 만들 수 있습니다.
  • Google Cloud 프로젝트당 최대 10개의 리전에 분석 뷰가 포함될 수 있습니다.

다음 단계