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"