BigQuery에 권장사항 내보내기
개요
BigQuery 내보내기를 사용하면 조직의 권장사항 항목 일일 스냅샷을 볼 수 있습니다. 이 작업은 BigQuery Data Transfer Service를 사용하여 수행합니다. 현재 BigQuery Export에 포함된 추천 도구는 이 문서를 참고하세요.
시작하기 전에
권장사항에 대한 데이터 전송을 만들기 전에 다음 단계를 완료합니다.
- BigQuery Data Transfer Service에 데이터 전송을 관리할 수 있는 권한을 허용합니다. BigQuery 웹 UI를 사용하여 전송을 만드는 경우 권한을 볼 수 있도록 브라우저의
console.cloud.google.com
에서 팝업을 허용해야 합니다. 자세한 내용은 BigQuery Data Transfer Service 사용 설정을 참조하세요. - 데이터를 저장할 BigQuery 데이터 세트를 만듭니다.
- 데이터 전송은 데이터 세트가 생성된 리전과 동일한 리전을 사용합니다. 데이터 세트와 전송이 생성되면 위치를 변경할 수 없습니다.
- 데이터 세트에는 전 세계 모든 리전의 인사이트와 추천이 포함됩니다. 따라서 이 작업은 프로세스 중에 이러한 모든 데이터를 글로벌 리전으로 집계합니다. 데이터 상주 문제가 있는 경우 Google Cloud Customer Care를 참조하세요.
- 데이터 세트 위치가 새로 출시된 경우 초기 내보내기 데이터가 제공되는 데 지연이 발생할 수 있습니다.
가격 책정
BigQuery로 권장사항을 내보내는 기능은 추천자 가격 책정 등급에 따라 모든 추천자 고객에게 제공됩니다.
필수 권한
데이터 전송을 설정하는 동안 데이터 전송을 만드는 프로젝트 수준에서 다음 권한이 필요합니다.
bigquery.transfers.update
- 전송을 만들 수 있습니다.bigquery.datasets.update
- 대상 데이터 세트에서 작업을 업데이트할 수 있습니다.resourcemanager.projects.update
- 내보내기 데이터를 저장할 프로젝트를 선택할 수 있습니다.pubsub.topics.list
- 내보내기에 대한 알림을 받기위해 Pub/Sub 주제를 선택할 수 있습니다.
조직 수준에서 다음 권한이 필요합니다. 이 조직은 내보내기가 설정된 항목에 해당합니다.
recommender.resources.export
- BigQuery로 권장사항을 내보낼 수 있습니다.
비용 절감 권장사항에 대해 협상된 가격을 내보내려면 다음 권한이 필요합니다.
billing.resourceCosts.get at project level
- 프로젝트 수준 권장사항에 대해 협상된 가격 내보내기를 허용합니다.billing.accounts.getSpendingInformation at billing account level
- 결제 계정 수준 권장사항에 대해 협상된 가격 내보내기를 허용합니다.
이러한 권한이 없으면 협상된 가격 대신 표준 가격을 사용하여 비용 절감 권장사항을 내보냅니다.
권한 부여
데이터 전송을 만드는 프로젝트에 다음 역할을 부여해야 합니다.
- BigQuery 관리자 역할 -
roles/bigquery.admin
- 프로젝트 소유자 역할 -
roles/owner
- 프로젝트 소유자 역할 -
roles/owner
- 프로젝트 뷰어 역할 -
roles/viewer
- 프로젝트 편집자 역할 -
roles/editor
- 결제 계정 관리자 역할 -
roles/billing.admin
- 결제 계정 비용 관리자 역할 -
roles/billing.costsManager
- 결제 계정 뷰어 역할 -
roles/billing.viewer
대상 데이터 세트에 대한 전송 및 업데이트 작업을 만들려면 다음 역할을 부여해야 합니다.
내보내기 데이터를 저장하고 알림을 수신할 Pub/Sub 주제를 선택할 수 있는 프로젝트를 선택하는 권한이 포함된 역할이 여러 개 있습니다. 이러한 권한을 모두 사용하려면 다음 역할을 부여하면 됩니다.
비용 절감 프로젝트 수준 권장사항에 대해 협상된 가격을 내보내기 위해서는 billing.resourceCosts.get 권한이 포함된 역할이 여러 개 있습니다. 이들 중 하나를 부여할 수 있습니다.
비용 절감 결제 계정 수준 권장사항에 대해 협상된 가격을 내보내기 위해서는 billing.accounts.getSpendingInformation 권한이 포함된 역할이 여러 개 있습니다. 이들 중 하나를 부여할 수 있습니다.
조직 수준에서 다음 역할을 부여해야 합니다.
- Google Cloud 콘솔의 권장사항 내보내기 (
roles/recommender.exporter
) 역할
필수 권한이 포함된 커스텀 역할을 만들 수도 있습니다.
권장사항 데이터 전송 만들기
Google Cloud 콘솔에 로그인합니다.
홈 화면에서 권장사항 탭을 클릭합니다.
내보내기를 클릭하여 BigQuery 내보내기 양식을 확인합니다.
권장사항 데이터를 저장할 대상 프로젝트를 선택하고 다음을 클릭합니다.
API 사용 설정을 클릭하여 내보낼 BigQuery API를 사용 설정합니다. 완료하는 데 몇 초 정도 걸릴 수 있습니다. 완료되면 계속을 클릭합니다.
전송 구성 양식에서 다음 세부정보를 입력합니다.
전송 구성 이름 섹션의 표시 이름에 전송 이름을 입력합니다. 전송 이름은 나중에 수정해야 할 경우에 전송을 쉽게 식별할 수 있는 값이면 됩니다.
일정 옵션 섹션의 일정에서 기본값(지금 시작)을 유지하거나 설정 시간에 시작을 클릭합니다.
반복에서 전송을 실행할 빈도 옵션을 선택합니다.
- 매일(기본값)
- 매주
- 매월
- 커스텀
- 주문형
시작일 및 실행 시간에 전송을 시작할 날짜 및 시간을 입력합니다. 지금 시작을 선택하면 이 옵션은 사용 중지됩니다.
대상 설정 섹션의 대상 데이터 세트에서 데이터를 저장하기 위해 만든 데이터 세트를 선택합니다.
데이터 소스 세부정보 섹션에서 다음을 수행합니다.
organization_id의 기본값은 현재 권장사항을 보고 있는 조직입니다. 권장사항을 다른 조직으로 내보내려면 조직 뷰어의 콘솔 상단에서 이를 변경하면 됩니다.
(선택사항) 알림 옵션 섹션에서 다음을 수행합니다.
- 전환을 클릭해서 이메일 알림을 사용 설정합니다. 이 옵션을 사용 설정하면 전송 실행이 실패할 때 전송 관리자에게 이메일 알림이 발송됩니다.
- Pub/Sub 주제 선택에서 주제 이름을 선택하거나 주제 만들기를 클릭합니다. 이 옵션은 전송에 대한 Pub/Sub 실행 알림을 구성합니다.
만들기를 클릭하여 전송을 만듭니다.
동의 팝업에서 허용을 클릭합니다.
전송이 생성되면 다시 권장사항 허브로 이동됩니다. 링크를 클릭하여 전송 구성 세부정보에 액세스할 수 있습니다. 또는 다음을 수행하여 전송에 액세스할 수 있습니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
데이터 전송을 클릭합니다. 사용 가능한 모든 데이터 전송을 볼 수 있습니다.
전송 실행 기록 보기
전송 실행 기록을 보려면 다음 안내를 따르세요.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
데이터 전송을 클릭합니다. 사용 가능한 모든 데이터 전송을 볼 수 있습니다.
목록에서 적절한 전송을 클릭합니다.
실행 기록 탭에 표시된 실행 전송 목록에서 세부정보를 볼 전송 항목을 선택합니다.
선택한 개별 실행 전송의 실행 세부정보 패널이 표시됩니다. 표시될 수 있는 실행 세부정보 중 일부는 다음과 같습니다.
- 사용할 수 없는 소스 데이터로 인해 지연된 전송
- 테이블로 내보낸 행 수를 나타내는 작업
- 백필을 부여하고 나중에 예약해야 하는 데이터 소스에 대한 권한이 누락되었습니다.
언제 데이터를 내보내나요?
데이터 전송을 만들면 첫 번째 내보내기가 2일 내에 수행됩니다. 첫 번째 내보내기 후에는 설정 중에 요청한 주기에 따라 내보내기 작업이 실행됩니다. 다음 조건이 적용됩니다.
특정 일(D)의 내보내기 작업은 일과 종료 시간(D) 데이터를 BigQuery 데이터 세트로 내보냅니다. 이 데이터는 일반적으로 다음 날 종료(D+1) 시점에 완료됩니다. 내보내기 작업은 PST 시간대로 실행되며 다른 시간대의 경우 추가 지연이 발생하는 것처럼 보일 수 있습니다.
일일 내보내기 작업은 내보낼 데이터를 모두 사용할 수 있을 때까지 실행되지 않습니다. 이로 인해 데이터 세트가 업데이트되는 날짜 및 시간에 변동이 발생하거나 때로는 지연이 발생할 수 있습니다. 따라서 특정 날짜가 지정된 테이블로 고정되었거나 날짜가 지정된 종속 항목을 포함하는 대신 사용 가능한 최신 데이터 스냅샷을 사용하는 것이 가장 좋습니다.
내보내기 작업은 지역별로 사용 가능한 최신 데이터를 전송합니다. 즉, 권장사항을 사용할 수 있는 최신 날짜가 지역마다 다를 수 있습니다.
내보내기의 일반적인 상태 메시지
BigQuery로 추천을 내보낼 때 표시되는 일반적인 상태 메시지에 대해 알아보세요.
사용자에게 필요한 권한이 없음
사용자에게 필요한 recommender.resources.export
권한이 없으면 다음 메시지가 표시됩니다. 다음 메시지가 표시됩니다.
User does not have required permission "recommender.resources.export". Please, obtain the required permissions for the datasource and try again by triggering a backfill for this date
이 문제를 해결하려면 내보내기가 설정된 조직의 조직 수준에서 내보내기를 설정하는 user/service account
에 roles/recommender.exporter
IAM 역할을 부여하세요. 아래의 gcloud 명령어를 통해 할당할 수 있습니다.
사용자의 경우:
gcloud organizations add-iam-policy-binding *<organization_id>* --member='user:*<user_name>*' --role='roles/recommender.exporter'
서비스 계정의 경우:
gcloud organizations add-iam-policy-binding *<organization_id>* --member='serviceAccount:*<service_acct_name>*' --role='roles/recommender.exporter'
소스 데이터를 사용할 수 없어 전송이 지연됨
소스 데이터를 아직 사용할 수 없어 전송 일정이 변경되면 다음 메시지가 표시됩니다. 이는 오류가 아니며, 내보내기 파이프라인이 아직 하루 동안 완료되지 않았음을 의미합니다. 새로 예약된 시간에 전송이 다시 실행되며 내보내기 파이프라인이 완료되면 성공합니다. 다음 메시지가 표시됩니다.
Transfer deferred due to source data not being available
소스 데이터를 찾을 수 없음
다음 메시지는 F1toPlacer 파이프라인이 완료되었지만 내보내기가 설정된 조직에 대한 추천 또는 인사이트를 찾을 수 없을 때 표시됩니다. 다음 메시지가 표시됩니다.
Source data not found for 'recommendations_export$<date>'insights_export$<date>
이 메시지는 다음과 같은 이유로 표시됩니다.
- 사용자가 내보내기를 설정한 지 2일이 지나지 않았습니다. 고객 가이드에서는 고객에게 내보내기가 완료되기까지 하루가 걸린다고 안내합니다.
- 특정 날짜에 조직에서 사용할 수 있는 추천이나 인사이트가 없습니다. 실제 사례이거나 해당 날짜에 모든 추천이나 인사이트가 제공되기 전에 파이프라인이 실행되었을 수 있습니다.
전송 테이블 보기
권장사항을 BigQuery로 내보내면 데이터 세트에 파티션을 나눈 테이블 두 개가 포함됩니다.
- recommendations_export
- insight_export
테이블 및 스키마에 대한 자세한 내용은 테이블 만들기 및 사용과 스키마 지정을 참조하세요.
데이터 전송 테이블을 보려면 다음 안내를 따르세요.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다. BigQuery 페이지로 이동
데이터 전송을 클릭합니다. 사용 가능한 모든 데이터 전송을 볼 수 있습니다.
목록에서 적절한 전송을 클릭합니다.
구성 탭을 클릭하고 데이터 세트를 클릭합니다.
탐색기 패널에서 프로젝트를 확장하고 데이터 세트를 선택합니다. 설명 및 세부정보가 세부정보 패널에 표시됩니다. 데이터 세트의 테이블은 탐색기 패널에 데이터 세트 이름과 함께 나열됩니다.
백필 예약
과거의 날짜(조직에서 내보내기를 선택한 날짜보다 늦은 날짜)에 대한 권장사항을 백필을 예약하여 내보낼 수 있습니다. 백필을 예약하려면 다음 안내를 따르세요.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
데이터 전송을 클릭합니다.
전송 페이지의 목록에서 적절한 전송을 클릭합니다.
백필 예약을 클릭합니다.
백필 예약 대화상자에서 시작일 및 종료일을 선택합니다.
전송 작업에 대한 자세한 내용은 전송 작업을 참조하세요.
스키마 내보내기
추천 내보내기 테이블:
schema:
fields:
- name: cloud_entity_type
type: STRING
description: |
Represents what cloud entity type the recommendation was generated for - eg: project number, billing account
- name: cloud_entity_id
type: STRING
description: |
Value of the project number or billing account id
- name: name
type: STRING
description: |
Name of recommendation. A project recommendation is represented as
projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/recommendations/[RECOMMENDATION_ID]
- name: location
type: STRING
description: |
Location for which this recommendation is generated
- name: recommender
type: STRING
description: |
Recommender ID of the recommender that has produced this recommendation
- name: recommender_subtype
type: STRING
description: |
Contains an identifier for a subtype of recommendations produced for the
same recommender. Subtype is a function of content and impact, meaning a
new subtype will be added when either content or primary impact category
changes.
Examples:
For recommender = "google.iam.policy.Recommender",
recommender_subtype can be one of "REMOVE_ROLE"/"REPLACE_ROLE"
- name: target_resources
type: STRING
mode: REPEATED
description: |
Contains the fully qualified resource names for resources changed by the
operations in this recommendation. This field is always populated. ex:
[//cloudresourcemanager.googleapis.com/projects/foo].
- name: description
type: STRING
description: |
Required. Free-form human readable summary in English.
The maximum length is 500 characters.
- name: last_refresh_time
type: TIMESTAMP
description: |
Output only. Last time this recommendation was refreshed by the system that created it in the first place.
- name: primary_impact
type: RECORD
description: |
Required. The primary impact that this recommendation can have while trying to optimize
for one category.
schema:
fields:
- name: category
type: STRING
description: |
Category that is being targeted.
Values can be the following:
CATEGORY_UNSPECIFIED:
Default unspecified category. Do not use directly.
COST:
Indicates a potential increase or decrease in cost.
SECURITY:
Indicates a potential increase or decrease in security.
PERFORMANCE:
Indicates a potential increase or decrease in performance.
RELIABILITY:
Indicates a potential increase or decrease in reliability.
- name: cost_projection
type: RECORD
description: Optional. Use with CategoryType.COST
schema:
fields:
- name: cost
type: RECORD
description: |
An approximate projection on amount saved or amount incurred.
Negative cost units indicate cost savings and positive cost units indicate
increase. See google.type.Money documentation for positive/negative units.
schema:
fields:
- name: currency_code
type: STRING
description: The 3-letter currency code defined in ISO 4217.
- name: units
type: INTEGER
description: |
The whole units of the amount. For example if `currencyCode` is `"USD"`,
then 1 unit is one US dollar.
- name: nanos
type: INTEGER
description: |
Number of nano (10^-9) units of the amount.
The value must be between -999,999,999 and +999,999,999 inclusive.
If `units` is positive, `nanos` must be positive or zero.
If `units` is zero, `nanos` can be positive, zero, or negative.
If `units` is negative, `nanos` must be negative or zero.
For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
- name: cost_in_local_currency
type: RECORD
description: |
An approximate projection on amount saved or amount incurred in the local currency.
Negative cost units indicate cost savings and positive cost units indicate
increase. See google.type.Money documentation for positive/negative units.
schema:
fields:
- name: currency_code
type: STRING
description: The 3-letter currency code defined in ISO 4217.
- name: units
type: INTEGER
description: |
The whole units of the amount. For example if `currencyCode` is `"USD"`,
then 1 unit is one US dollar.
- name: nanos
type: INTEGER
description: |
Number of nano (10^-9) units of the amount.
The value must be between -999,999,999 and +999,999,999 inclusive.
If `units` is positive, `nanos` must be positive or zero.
If `units` is zero, `nanos` can be positive, zero, or negative.
If `units` is negative, `nanos` must be negative or zero.
For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
- name: duration
type: RECORD
description: Duration for which this cost applies.
schema:
fields:
- name: seconds
type: INTEGER
description: |
Signed seconds of the span of time. Must be from -315,576,000,000
to +315,576,000,000 inclusive. Note: these bounds are computed from:
60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
- name: nanos
type: INTEGER
description: |
Signed fractions of a second at nanosecond resolution of the span
of time. Durations less than one second are represented with a 0
`seconds` field and a positive or negative `nanos` field. For durations
of one second or more, a non-zero value for the `nanos` field must be
of the same sign as the `seconds` field. Must be from -999,999,999
to +999,999,999 inclusive.
- name: pricing_type_name
type: STRING
description: |
A pricing type can either be based on the price listed on GCP (LIST) or a custom
price based on past usage (CUSTOM).
- name: reliability_projection
type: RECORD
description: Optional. Use with CategoryType.RELIABILITY
schema:
fields:
- name: risk_types
type: STRING
mode: REPEATED
description: |
The risk associated with the reliability issue.
RISK_TYPE_UNSPECIFIED:
Default unspecified risk. Do not use directly.
SERVICE_DISRUPTION:
Potential service downtime.
DATA_LOSS:
Potential data loss.
ACCESS_DENY:
Potential access denial. The service is still up but some or all clients
can not access it.
- name: details_json
type: STRING
description: |
Additional reliability impact details that is provided by the recommender in JSON
format.
- name: state
type: STRING
description: |
Output only. The state of the recommendation:
STATE_UNSPECIFIED:
Default state. Do not use directly.
ACTIVE:
Recommendation is active and can be applied. Recommendations content can
be updated by Google.
ACTIVE recommendations can be marked as CLAIMED, SUCCEEDED, or FAILED.
CLAIMED:
Recommendation is in claimed state. Recommendations content is
immutable and cannot be updated by Google.
CLAIMED recommendations can be marked as CLAIMED, SUCCEEDED, or FAILED.
SUCCEEDED:
Recommendation is in succeeded state. Recommendations content is
immutable and cannot be updated by Google.
SUCCEEDED recommendations can be marked as SUCCEEDED, or FAILED.
FAILED:
Recommendation is in failed state. Recommendations content is immutable
and cannot be updated by Google.
FAILED recommendations can be marked as SUCCEEDED, or FAILED.
DISMISSED:
Recommendation is in dismissed state.
DISMISSED recommendations can be marked as ACTIVE.
- name: ancestors
type: RECORD
description: |
Ancestry for the recommendation entity
schema:
fields:
- name: organization_id
type: STRING
description: |
Organization to which the recommendation project
- name: folder_ids
type: STRING
mode: REPEATED
description: |
Up to 5 levels of parent folders for the recommendation project
- name: associated_insights
type: STRING
mode: REPEATED
description: |
Insights associated with this recommendation. A project insight is represented as
projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/insights/[insight_id]
- name: recommendation_details
type: STRING
description: |
Additional details about the recommendation in JSON format.
schema:
- name: overview
type: RECORD
description: Overview of the recommendation in JSON format
- name: operation_groups
type: OperationGroup
mode: REPEATED
description: Operations to one or more Google Cloud resources grouped in such a way
that, all operations within one group are expected to be performed
atomically and in an order. More here: https://cloud.google.com/recommender/docs/key-concepts#operation_groups
- name: operations
type: Operation
description: An Operation is the individual action that must be performed as one of the atomic steps in a suggested recommendation. More here: https://cloud.google.com/recommender/docs/key-concepts?#operation
- name: state_metadata
type: map with key: STRING, value: STRING
description: A map of STRING key, STRING value of metadata for the state, provided by user or automations systems.
- name: additional_impact
type: Impact
mode: REPEATED
description: Optional set of additional impact that this recommendation may have when
trying to optimize for the primary category. These may be positive
or negative. More here: https://cloud.google.com/recommender/docs/key-concepts?#recommender_impact
- name: priority
type: STRING
description: |
Priority of the recommendation:
PRIORITY_UNSPECIFIED:
Default unspecified priority. Do not use directly.
P4:
Lowest priority.
P3:
Second lowest priority.
P2:
Second highest priority.
P1:
Highest priority.
통계 내보내기 테이블:
schema:
- fields:
- name: cloud_entity_type
type: STRING
description: |
Represents what cloud entity type the recommendation was generated for - eg: project number, billing account
- name: cloud_entity_id
type: STRING
description: |
Value of the project number or billing account id
- name: name
type: STRING
description: |
Name of recommendation. A project recommendation is represented as
projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/recommendations/[RECOMMENDATION_ID]
- name: location
type: STRING
description: |
Location for which this recommendation is generated
- name: insight_type
type: STRING
description: |
Recommender ID of the recommender that has produced this recommendation
- name: insight_subtype
type: STRING
description: |
Contains an identifier for a subtype of recommendations produced for the
same recommender. Subtype is a function of content and impact, meaning a
new subtype will be added when either content or primary impact category
changes.
Examples:
For recommender = "google.iam.policy.Recommender",
recommender_subtype can be one of "REMOVE_ROLE"/"REPLACE_ROLE"
- name: target_resources
type: STRING
mode: REPEATED
description: |
Contains the fully qualified resource names for resources changed by the
operations in this recommendation. This field is always populated. ex:
[//cloudresourcemanager.googleapis.com/projects/foo].
- name: description
type: STRING
description: |
Required. Free-form human readable summary in English.
The maximum length is 500 characters.
- name: last_refresh_time
type: TIMESTAMP
description: |
Output only. Last time this recommendation was refreshed by the system that created it in the first place.
- name: category
type: STRING
description: |
Category being targeted by the insight. Can be one of:
Unspecified category.
CATEGORY_UNSPECIFIED = Unspecified category.
COST = The insight is related to cost.
SECURITY = The insight is related to security.
PERFORMANCE = The insight is related to performance.
MANAGEABILITY = The insight is related to manageability.
RELIABILITY = The insight is related to reliability.;
- name: state
type: STRING
description: |
Output only. The state of the recommendation:
STATE_UNSPECIFIED:
Default state. Do not use directly.
ACTIVE:
Recommendation is active and can be applied. Recommendations content can
be updated by Google.
ACTIVE recommendations can be marked as CLAIMED, SUCCEEDED, or FAILED.
CLAIMED:
Recommendation is in claimed state. Recommendations content is
immutable and cannot be updated by Google.
CLAIMED recommendations can be marked as CLAIMED, SUCCEEDED, or FAILED.
SUCCEEDED:
Recommendation is in succeeded state. Recommendations content is
immutable and cannot be updated by Google.
SUCCEEDED recommendations can be marked as SUCCEEDED, or FAILED.
FAILED:
Recommendation is in failed state. Recommendations content is immutable
and cannot be updated by Google.
FAILED recommendations can be marked as SUCCEEDED, or FAILED.
DISMISSED:
Recommendation is in dismissed state.
DISMISSED recommendations can be marked as ACTIVE.
- name: ancestors
type: RECORD
description: |
Ancestry for the recommendation entity
schema:
fields:
- name: organization_id
type: STRING
description: |
Organization to which the recommendation project
- name: folder_ids
type: STRING
mode: REPEATED
description: |
Up to 5 levels of parent folders for the recommendation project
- name: associated_recommendations
type: STRING
mode: REPEATED
description: |
Insights associated with this recommendation. A project insight is represented as
projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/insights/[insight_id]
- name: insight_details
type: STRING
description: |
Additional details about the insight in JSON format
schema:
fields:
- name: content
type: STRING
description: |
A struct of custom fields to explain the insight.
Example: "grantedPermissionsCount": "1000"
- name: observation_period
type: TIMESTAMP
description: |
Observation period that led to the insight. The source data used to
generate the insight ends at last_refresh_time and begins at
(last_refresh_time - observation_period).
- name: state_metadata
type: STRING
description: |
A map of metadata for the state, provided by user or automations systems.
- name: severity
type: STRING
description: |
Severity of the insight:
SEVERITY_UNSPECIFIED:
Default unspecified severity. Do not use directly.
LOW:
Lowest severity.
MEDIUM:
Second lowest severity.
HIGH:
Second highest severity.
CRITICAL:
Highest severity.
쿼리 예
다음 샘플 쿼리를 사용하여 내보낸 데이터를 분석할 수 있습니다.
추천 기간이 일 단위로 표시되는 권장사항의 비용 절감 보기
SELECT name, recommender, target_resources,
case primary_impact.cost_projection.cost.units is null
when true then round(primary_impact.cost_projection.cost.nanos * power(10,-9),2)
else
round( primary_impact.cost_projection.cost.units +
(primary_impact.cost_projection.cost.nanos * power(10,-9)), 2)
end
as dollar_amt,
primary_impact.cost_projection.duration.seconds/(60*60*24) as duration_in_days
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and primary_impact.category = "COST"
사용하지 않는 IAM 역할 목록 보기
SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and recommender = "google.iam.policy.Recommender"
and recommender_subtype = "REMOVE_ROLE"
더 작은 역할로 바꿔야 하는 부여된 역할 목록 보기
SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and recommender = "google.iam.policy.Recommender"
and recommender_subtype = "REPLACE_ROLE"
권장사항의 통계 보기
SELECT recommendations.name as recommendation_name,
insights.name as insight_name,
recommendations.cloud_entity_id,
recommendations.cloud_entity_type,
recommendations.recommender,
recommendations.recommender_subtype,
recommendations.description,
recommendations.target_resources,
recommendations.recommendation_details,
recommendations.state,
recommendations.last_refresh_time as recommendation_last_refresh_time,
insights.insight_type,
insights.insight_subtype,
insights.category,
insights.description,
insights.insight_details,
insights.state,
insights.last_refresh_time as insight_last_refresh_time
FROM `<project>.<dataset>.recommendations_export` as recommendations,
`<project>.<dataset>.insights_export` as insights
WHERE DATE(recommendations._PARTITIONTIME) = "<date>"
and DATE(insights._PARTITIONTIME) = "<date>"
and insights.name in unnest(recommendations.associated_insights)
특정 폴더에 속한 프로젝트의 권장사항 보기
이 쿼리는 프로젝트에서 최대 5개 수준까지 상위 폴더를 반환합니다.
SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and "<folder_id>" in unnest(ancestors.folder_ids)
현재까지 내보낸 사용 가능한 최신 날짜에 대한 권장사항 보기
DECLARE max_date TIMESTAMP;
SET max_date = (
SELECT MAX(_PARTITIONTIME) FROM
`<project>.<dataset>.recommendations_export`
);
SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE _PARTITIONTIME = max_date
Sheets를 사용하여 BigQuery 데이터 탐색
BigQuery에서 쿼리를 실행하는 대신 새로운 BigQuery 데이터 커넥터인 연결된 시트를 사용하여 스프레드시트에서 수십억 개의 BigQuery 데이터 행을 액세스 분석, 시각화, 공유할 수 있습니다. 자세한 내용은 Google Sheets에서 BigQuery 데이터 시작하기를 참조하세요.
BigQuery 명령줄 및 REST API를 사용하여 내보내기 설정
-
Google Cloud Console 또는 명령줄을 통해 필요한 Identity and Access Management 권한을 가져올 수 있습니다.
- 서비스 계정에 대한 명령줄
- 사용자를 위한 명령줄:
예를 들어 명령줄을 사용하여 서비스 계정의 조직 수준 recommender.resources.export 권한을 가져오려면 다음 명령어를 실행합니다.
gcloud organizations add-iam-policy-binding *<organization_id>* --member=serviceAccount:*<service_acct_name>*' --role='roles/recommender.exporter'
-
Datasource to use: 6063d10f-0000-2c12-a706-f403045e6250
내보내기 만들기:
BigQuery 명령줄 사용:
bq mk \ --transfer_config \ --project_id=project_id \ --target_dataset=dataset_id \ --display_name=name \ --params='parameters' \ --data_source=data_source \ --service_account_name=service_account_name
각 항목의 의미는 다음과 같습니다.
- project_id는 프로젝트 ID입니다.
- dataset는 전송 구성의 대상 데이터 세트 ID입니다.
- name은 전송 구성의 표시 이름입니다. 전송 이름은 나중에 수정해야 할 경우에 전송을 쉽게 식별할 수 있는 값이면 됩니다.
- parameters에는 JSON 형식으로 생성된 전송 구성의 매개변수가 있습니다. 권장사항 및 통계 BigQuery Export의 경우 권장사항과 통계를 내보내야 하는 organization_id를 제공해야 합니다. 매개변수 형식: '{"organization_id":"<org id>"}'
- 사용할 data_source 데이터 소스: '6063d10f-0000-2c12-a706-f403045e6250'
- service_account_name은 내보내기를 인증하는 데 사용되는 서비스 계정 이름입니다. 서비스 계정은 전송을 만드는 데 사용한 것과 동일한
project_id
가 소유해야 하며 위에 나열된 모든 필수 권한이 있어야 합니다.
UI 또는 BigQuery 명령줄을 통해 기존 내보내기를 관리합니다.
참고 - 향후 내보내기 구성을 업데이트하는 사용자와 관계없이 내보내기는 계정을 설정한 사용자로 실행됩니다. 예를 들어 서비스 계정을 사용하여 내보내기를 설정하고 나중에 인간 사용자가 BigQuery Data Transfer Service UI를 통해 내보내기 구성을 업데이트하면 내보내기가 서비스 계정으로 계속 실행됩니다. 이 경우 내보내기가 실행될 때마다 서비스 계정에 'recommender.resources.export'의 권한 확인이 수행됩니다.