Print
카테고리: [ Cloud Computing & MSA ]
조회수: 435

 

 GCP Recommendation 에서 Big query 로 export 할 수 있다.

 export 한 데이터는 다음과 같이 sql로 쿼리하여 recommendation_detail의 json 값을 가져올 수도 있다.

 아래는 change_machine_type인 subtype 기준으로 데이터를 뽑는 것이다.

 다음의 빅쿼리 가이드북을 참고하였다.

https://zzsza.github.io/bigquery/

 

SPLIT -> resource 를 불러와서 '/' 문자로 나눈 Array 형태.

OFFSET(4) -> Array의 5번째 값. (0부터 시작)

JSON_QUERY(json값이 있는 칼럼, $(json안에서 불러올 값의 위치. '.' 로 하위 위치 표시))

AS -> 결과 출력에서 표시할 칼럼이름

AND DATE(_PARTITIONTIME) = "2022-09-25" → 09월 25일에 추출된 데이터 가져오기

 

SELECT
  SPLIT(JSON_QUERY(recommendation_details, "$.overview.resource"),'/')[OFFSET(4)] AS PROJECT,
  JSON_QUERY(recommendation_details, "$.overview.location"AS LOCATION,
  JSON_QUERY(recommendation_details, "$.overview.resourceName"AS INSTANCE_NAME,
  JSON_QUERY(recommendation_details, "$.overview.currentMachineType.name"AS BEFORE_TYPE,
  JSON_QUERY(recommendation_details, "$.overview.currentMachineType.guestCpus"AS BEFORE_CPU,
  JSON_QUERY(recommendation_details, "$.overview.currentMachineType.memoryMb"AS BEFORE_MEMORY,
  JSON_QUERY(recommendation_details, "$.overview.recommendedMachineType.name"AS AFTER_TYPE,
  JSON_QUERY(recommendation_details, "$.overview.recommendedMachineType.guestCpus"AS AFTER_CPU,
  JSON_QUERY(recommendation_details, "$.overview.recommendedMachineType.memoryMb"AS AFTER_MEMORY,
  primary_impact.cost_projection.cost.currency_code AS COST_CODE,
  primary_impact.cost_projection.cost.units AS COST_UNIT,
  primary_impact.cost_projection.cost.nanos AS COST_NANO,
  primary_impact.cost_projection.duration.seconds AS COST_DURATIONs
FROM `{프로젝트}.{DATASET}.{TABLE}`
WHERE recommender_subtype = "CHANGE_MACHINE_TYPE"
AND DATE(_PARTITIONTIME) = "2022-09-25"