Esportare i suggerimenti in BigQuery

Panoramica

Con BigQuery Export, puoi visualizzare gli snapshot giornalieri dei suggerimenti per la tua organizzazione. Questa operazione viene eseguita utilizzando BigQuery Data Transfer Service. Consulta la pagina Motori per suggerimenti per vedere quali motori per suggerimenti sono inclusi in BigQuery Export oggi.

BigQuery Export supporta quanto segue:

  • Esportazione di suggerimenti e insight per tutti i progetti, le cartelle e gli account di fatturazione di un'organizzazione (inclusi suggerimenti e insight a livello di organizzazione)

  • Esportazione dei prezzi negoziati anziché dei prezzi standard per i suggerimenti di risparmio sui costi

Prima di iniziare

Completa i seguenti passaggi prima di creare un trasferimento di dati per i suggerimenti:

  • Consenti a BigQuery Data Transfer Service di gestire il trasferimento di dati. Se utilizzi l'interfaccia utente web di BigQuery per creare il trasferimento, devi consentire i popup da console.cloud.google.com nel browser per poter visualizzare le autorizzazioni. Per maggiori dettagli, consulta la pagina Abilitare BigQuery Data Transfer Service.
  • Crea un set di dati BigQuery per archiviare i dati.
    • Il trasferimento di dati utilizza la stessa regione in cui viene creato il set di dati. La località è immutabile una volta creati il set di dati e il trasferimento.
    • Il set di dati conterrà insight e suggerimenti da tutte le regioni del mondo. Pertanto, questa operazione aggregherà tutti questi dati in una regione globale durante il processo. Se hai dubbi sulla residenza dei dati, contatta l'assistenza clienti di Google Cloud.
    • Se la località del set di dati è stata lanciata di recente, potrebbe verificarsi un ritardo nella disponibilità dei dati di esportazione iniziali.

Prezzi

L'esportazione dei suggerimenti in BigQuery è disponibile per tutti i clienti del motore per suggerimenti in base al loro livello di prezzi del motore per suggerimenti.

Autorizzazioni obbligatorie

Durante la configurazione del trasferimento di dati, sono necessarie le seguenti autorizzazioni a livello di progetto in cui crei un trasferimento di dati:

  • bigquery.transfers.update - Ti consente di creare il trasferimento
  • bigquery.datasets.update - Ti consente di aggiornare le azioni sul set di dati di destinazione
  • resourcemanager.projects.update - Ti consente di selezionare un progetto in cui vuoi archiviare i dati di esportazione
  • pubsub.topics.list - Ti consente di selezionare un argomento Pub/Sub per ricevere notifiche sull'esportazione

È necessaria la seguente autorizzazione a livello di organizzazione. Questa organizzazione corrisponde a quella per cui viene configurata l'esportazione.

  • recommender.resources.export - Ti consente di esportare suggerimenti in BigQuery

Per esportare i prezzi negoziati per i suggerimenti di risparmio sui costi sono necessarie le seguenti autorizzazioni:

  • billing.resourceCosts.get at project level - Consente di esportare i prezzi negoziati per i suggerimenti a livello di progetto
  • billing.accounts.getSpendingInformation at billing account level - Consente di esportare i prezzi negoziati per i suggerimenti a livello di account di fatturazione

Senza queste autorizzazioni, i suggerimenti di risparmio sui costi verranno esportati con i prezzi standard anziché con i prezzi negoziati.

Concedi le autorizzazioni

I seguenti ruoli devono essere concessi al progetto in cui crei il trasferimento di dati:

    Per consentirti di creare un trasferimento e aggiornare le azioni sul set di dati di destinazione, devi concedere il seguente ruolo:

  • Ruolo Amministratore BigQuery - roles/bigquery.admin
  • Esistono più ruoli che contengono le autorizzazioni per selezionare un progetto per l'archiviazione dei dati di esportazione e per selezionare un argomento Pub/Sub per ricevere le notifiche. Per avere a disposizione entrambe queste autorizzazioni, puoi concedere il seguente ruolo:

  • Ruolo Project owner - roles/owner
  • Esistono più ruoli che contengono l'autorizzazione billing.resourceCosts.get per esportare i prezzi negoziati per i suggerimenti di risparmio sui costi a livello di progetto. Puoi concederne uno qualsiasi:

  • Ruolo Project owner - roles/owner
  • Ruolo Visualizzatore progetto - roles/viewer
  • Ruolo Editor progetto - roles/editor
  • Esistono più ruoli che contengono l'autorizzazione billing.accounts.getSpendingInformation per esportare i prezzi negoziati per i suggerimenti di risparmio sui costi a livello di account di fatturazione. Puoi concederne uno qualsiasi:

  • Ruolo Amministratore account di fatturazione - roles/billing.admin
  • Ruolo Gestore costi account di fatturazione - roles/billing.costsManager
  • Ruolo Visualizzatore account di fatturazione - roles/billing.viewer

Devi concedere il seguente ruolo a livello di organizzazione:

  • Ruolo Recommendations Exporter ( Google Cloud ) nella console.roles/recommender.exporter

Puoi anche creare ruoli personalizzati contenenti le autorizzazioni richieste.

Creare un trasferimento di dati per i suggerimenti

  1. Vai al modulo di esportazione BigQuery per Active Assist.

    Vai al modulo di esportazione BigQuery

  2. Seleziona un progetto di destinazione in cui archiviare i dati dei suggerimenti.

    Modulo nella console per selezionare un progetto di destinazione in cui archiviare i dati dei consigli, con un messaggio di errore che indica che l'ID progetto di destinazione è obbligatorio. Modulo nella console per selezionare un progetto di destinazione in cui archiviare i dati dei consigli, con un messaggio di errore che indica che l'ID progetto di destinazione è obbligatorio.

  3. Fai clic su Avanti.

  4. Fai clic su Abilita API per abilitare le API BigQuery per l'esportazione. Il completamento può richiedere alcuni secondi. Al termine, fai clic su Continua.

  5. Nel modulo Configura trasferimento, fornisci i seguenti dettagli:

    • Nella sezione Nome configurazione di trasferimento, per Nome visualizzato, inserisci un nome per il trasferimento. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare facilmente il trasferimento se devi modificarlo in un secondo momento. Modulo nella console per l'inserimento di un nome di trasferimento, con il nome visualizzato contrassegnato come obbligatorio. Modulo nella console per l'inserimento di un nome di trasferimento, con il nome visualizzato contrassegnato come obbligatorio.

    • Nella sezione Opzioni di pianificazione, per Pianifica, lascia il valore predefinito (Inizia ora) o fai clic su Inizia a un'ora specifica.

      • Per Si ripete, scegli un'opzione per la frequenza con cui eseguire il trasferimento.

        • Ogni giorno (impostazione predefinita)
        • Ogni settimana
        • Ogni mese
        • Personalizzato
        • On demand
      • In Data di inizio e ora di esecuzione, inserisci la data e l'ora di inizio del trasferimento. Se scegli Inizia ora, questa opzione è disabilitata.

      Modulo nella console che mostra le opzioni di pianificazione per il trasferimento dei dati, con le scelte correnti impostate sulle ore 09:30 del fuso orario Asia/Calcutta. Modulo nella console che mostra le opzioni di pianificazione per il trasferimento dei dati, con le scelte attuali impostate per ripetere il trasferimento ogni giorno, a partire dal 1° aprile 2021 alle 9:30 ora Asia/Calcutta.

    • Nella sezione Impostazioni destinazione, per Set di dati di destinazione, scegli l'ID del set di dati che hai creato per archiviare i dati.

      Modulo nella console per l'inserimento dell'ID set di dati, contrassegnato come campo obbligatorio. Modulo nella console per l'inserimento dell'ID set di dati, contrassegnato come campo obbligatorio.

    • Nella sezione Dettagli origine dati:

      • Il valore predefinito di organization_id è l'organizzazione per cui stai visualizzando i suggerimenti. Se vuoi esportare i suggerimenti in un'altra organizzazione, puoi modificare questa impostazione nella parte superiore della console nel visualizzatore dell'organizzazione.

      Modulo nella console per l'inserimento dell'ID organizzazione. Modulo nella console per l'inserimento dell'ID organizzazione.

    • (Facoltativo) Nella sezione Opzioni di notifica:

      • Fai clic sul pulsante di attivazione/disattivazione per abilitare le notifiche via email. Quando attivi questa opzione, l'amministratore del trasferimento riceve una notifica via email quando l'esecuzione di un trasferimento non riesce.
      • In Seleziona un argomento Pub/Sub, scegli il nome dell'argomento o fai clic su Crea un argomento. Questa opzione configura l'esecuzione delle notifiche di Pub/Sub in relazione al trasferimento.

      Modulo nella console per impostare le opzioni di notifica, che mostra un pulsante di attivazione/disattivazione per abilitare le notifiche via email e un menu a discesa per selezionare un argomento Pub/Sub. Modulo nella console per impostare le opzioni di notifica, che mostra un pulsante di attivazione/disattivazione per abilitare le notifiche via email e un menu a discesa per selezionare un argomento Pub/Sub.

  6. Fai clic su Crea per creare il trasferimento.

  7. Fai clic su Consenti nel popup di consenso.

    Finestra di dialogo di autorizzazione per Recommender, che elenca le autorizzazioni richieste e fornisce link per scoprire i rischi e come Recommender gestisce i dati. Finestra di dialogo di autorizzazione per Recommender, che elenca le autorizzazioni richieste e fornisce link per scoprire i rischi e come Recommender gestisce i dati.

  8. Una volta creato il trasferimento, torni ad Active Assist. Puoi fare clic sul link per accedere ai dettagli della configurazione del trasferimento. In alternativa, puoi accedere ai trasferimenti procedendo nel seguente modo:

    • Vai alla pagina BigQuery nella Google Cloud console.

      Vai alla pagina BigQuery

    • Fai clic su Trasferimenti di dati. Puoi visualizzare tutti i trasferimenti di dati disponibili.

Visualizzare la cronologia di esecuzione di un trasferimento

Per visualizzare la cronologia di esecuzione di un trasferimento:

  1. Vai alla pagina BigQuery nella Google Cloud console.

    Vai alla pagina BigQuery

  2. Fai clic su Trasferimenti di dati. Puoi visualizzare tutti i trasferimenti di dati disponibili.

  3. Fai clic sul trasferimento appropriato nell'elenco.

  4. Nell'elenco dei trasferimenti di esecuzione visualizzato nella scheda CRONOLOGIA DI ESECUZIONE, seleziona il trasferimento di cui vuoi visualizzare i dettagli.

  5. Viene visualizzato il riquadro Dettagli esecuzione per il trasferimento di esecuzione individuale selezionato. Alcuni dei possibili dettagli di esecuzione visualizzati sono:

    • Trasferimento posticipato a causa della mancata disponibilità dei dati di origine.
    • Job che indica il numero di righe esportate in una tabella
    • Autorizzazioni mancanti per un'origine dati che devi concedere e per cui devi pianificare un backfill.

Quando vengono esportati i dati?

Quando crei un trasferimento di dati, la prima esportazione avviene in due giorni. Dopo la prima esportazione, i job di esportazione vengono eseguiti alla frequenza richiesta al momento della configurazione. Si applicano le seguenti condizioni:

  • Il job di esportazione per un giorno specifico (G) esporta i dati di fine giornata (G) nel set di dati BigQuery, che in genere termina entro la fine del giorno successivo (G+1). Il job di esportazione viene eseguito nel fuso orario PST e potrebbe sembrare che abbia un ritardo aggiuntivo per altri fusi orari.

  • Il job di esportazione giornaliera non viene eseguito finché non sono disponibili tutti i dati da esportare. Questo può comportare variazioni e, a volte, ritardi nel giorno e nell'ora in cui il tuo set di dati viene aggiornato. Pertanto, è preferibile utilizzare l'ultimo snapshot disponibile dei dati anziché avere una dipendenza sensibile al tempo su tabelle con date specifiche.

  • Il job di esportazione trasferisce gli ultimi dati disponibili per regione. Ciò significa che potrebbe esserci una differenza nella data più recente per cui sono disponibili i suggerimenti per le diverse regioni.

Messaggi di stato comuni in un'esportazione

Scopri di più sui messaggi di stato comuni che puoi visualizzare durante l'esportazione dei suggerimenti in BigQuery.

L'utente non dispone dell'autorizzazione richiesta

Il seguente messaggio viene visualizzato quando l'utente non dispone dell'autorizzazione richiesta recommender.resources.export. Viene visualizzato il seguente messaggio:

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

Per risolvere il problema, concedi il ruolo IAM roles/recommender.exporter all'impostazione user/service account che configura l'esportazione a livello di organizzazione per l'organizzazione per cui è stata configurata l'esportazione. Può essere concesso tramite i comandi gcloud riportati di seguito:

  • Nel caso di un utente:

    gcloud organizations add-iam-policy-binding *<organization_id>* --member='user:*<user_name>*' --role='roles/recommender.exporter'
    
  • Nel caso di un account di servizio:

    gcloud organizations add-iam-policy-binding *<organization_id>* --member='serviceAccount:*<service_acct_name>*' --role='roles/recommender.exporter'
    

Trasferimento posticipato a causa della mancata disponibilità dei dati di origine

Il seguente messaggio viene visualizzato quando il trasferimento viene riprogrammato perché i dati di origine non sono ancora disponibili. Non si tratta di un errore. Significa che le pipeline di esportazione non sono ancora state completate per la giornata. Il trasferimento verrà eseguito di nuovo all'ora pianificata e avrà esito positivo una volta completate le pipeline di esportazione. Viene visualizzato il seguente messaggio:

Transfer deferred due to source data not being available

Dati di origine non trovati

Il seguente messaggio viene visualizzato quando le pipeline F1toPlacer sono state completate, ma non sono stati trovati suggerimenti o insight per l'organizzazione per cui è stata configurata l'esportazione. Viene visualizzato il seguente messaggio:

Source data not found for 'recommendations_export$<date>'insights_export$<date>

Questo messaggio viene visualizzato per i seguenti motivi:

  • L'utente ha configurato l'esportazione meno di 2 giorni fa. La guida per i clienti informa i clienti che è previsto un ritardo di un giorno prima che l'esportazione sia disponibile.
  • Non sono disponibili suggerimenti o insight per la loro organizzazione per il giorno specifico. Potrebbe essere il caso effettivo oppure le pipeline potrebbero essere state eseguite prima che tutti i suggerimenti o gli insight fossero disponibili per la giornata.

Visualizzare le tabelle per un trasferimento

Quando esporti i suggerimenti in BigQuery, il set di dati contiene due tabelle partizionate per data:

  • recommendations_export
  • insight_export

Per maggiori dettagli su tabelle e schemi, consulta Creare e utilizzare tabelle e Specificare uno schema.

Per visualizzare le tabelle per un trasferimento di dati:

  1. Vai alla pagina BigQuery nella Google Cloud console. Vai alla pagina BigQuery

  2. Fai clic su Trasferimenti di dati. Puoi visualizzare tutti i trasferimenti di dati disponibili.

  3. Fai clic sul trasferimento appropriato nell'elenco.

  4. Fai clic sulla scheda CONFIGURAZIONE e poi sul set di dati.

  5. Nel riquadro Spazio di esplorazione, espandi il progetto e seleziona un set di dati. La descrizione e i dettagli vengono visualizzati nel riquadro dei dettagli. Le tabelle per un set di dati sono elencate con il nome del set di dati nel riquadro Spazio di esplorazione.

Pianificare un backfill

I suggerimenti per una data passata (successiva alla data in cui l'organizzazione ha attivato l'esportazione) possono essere esportati pianificando un backfill. Per pianificare un backfill:

  1. Vai alla pagina BigQuery nella Google Cloud console.

    Vai alla pagina BigQuery

  2. Fai clic su Trasferimenti di dati.

  3. Nella pagina Trasferimenti, fai clic su un trasferimento appropriato nell'elenco.

    1. Fai clic su Pianifica backfill.

    2. Nella finestra di dialogo Pianifica backfill, scegli la Data di inizio e Data di fine.

      Modulo nella console per la pianificazione di un&#39;esecuzione di backfill, che mostra i campi obbligatori per la data di inizio e la data di fine, nonché una nota che indica che la data di inizio è inclusa e la data di fine è esclusa. Modulo nella console per la pianificazione di un&#39;esecuzione di backfill, che mostra i campi obbligatori per la data di inizio e la data di fine, nonché una nota che indica che la data di inizio è inclusa e la data di fine è esclusa.

Per maggiori informazioni sull'utilizzo dei trasferimenti, consulta Utilizzare i trasferimenti.

Schema di esportazione

Tabella di esportazione dei suggerimenti:

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.

Tabella di esportazione degli insight:

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.

Esempi di query

Puoi utilizzare le seguenti query di esempio per analizzare i dati esportati.

Visualizzare il risparmio sui costi per i suggerimenti in cui la durata del suggerimento è indicata in giorni

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"

Visualizzare l'elenco dei ruoli IAM inutilizzati

SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and recommender = "google.iam.policy.Recommender"
and recommender_subtype = "REMOVE_ROLE"

Visualizzare un elenco di ruoli concessi che devono essere sostituiti da ruoli più piccoli

SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and recommender = "google.iam.policy.Recommender"
and recommender_subtype = "REPLACE_ROLE"

Visualizzare gli insight per un suggerimento

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)

Visualizzare i suggerimenti per i progetti appartenenti a una cartella specifica

Questa query restituisce le cartelle principali fino a cinque livelli dal progetto.

SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and "<folder_id>" in unnest(ancestors.folder_ids)

Visualizzare i suggerimenti per la data più recente disponibile esportata finora

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

Utilizzare Fogli per esplorare i dati BigQuery

In alternativa all'esecuzione di query su BigQuery, puoi accedere a miliardi di righe di dati BigQuery, analizzarle, visualizzarle e condividerle dal tuo foglio di lavoro con Fogli connessi, il nuovo connettore dati di BigQuery. Per maggiori informazioni, consulta Iniziare a utilizzare i dati BigQuery in Fogli Google.

Configurare l'esportazione utilizzando la riga di comando di BigQuery e l'API REST

  • Ottieni le autorizzazioni richieste:

    Puoi ottenere le autorizzazioni Identity and Access Management richieste tramite la Google Cloud console o la riga di comando.

    Ad esempio, per utilizzare la riga di comando per ottenere l'autorizzazione recommender.resources.export a livello di organizzazione per l'account di servizio:

    gcloud organizations add-iam-policy-binding *<organization_id>* --member=serviceAccount:*<service_acct_name>*' --role='roles/recommender.exporter'

  • Crea il set di dati e abilita l'API BigQuery

  • Registra il progetto nell'origine dati BigQuery

    Datasource to use: 6063d10f-0000-2c12-a706-f403045e6250

  • Crea l'esportazione:

    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

    Dove:

    • project_id è l'ID progetto.
    • dataset è l'ID del set di dati di destinazione per la configurazione del trasferimento.
    • name è il nome visualizzato per la configurazione del trasferimento. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare facilmente il trasferimento se devi modificarlo in un secondo momento.
    • parameters contiene i parametri per la configurazione del trasferimento creata in formato JSON. Per BigQuery Export di suggerimenti e insight, devi fornire l'organization_id per cui è necessario esportare i suggerimenti e gli insight. Formato dei parametri: '{"organization_id":"<org id>"}'
    • data_source Origine dati da utilizzare: '6063d10f-0000-2c12-a706-f403045e6250'
    • service_account_name è il nome dell'account di servizio utilizzato per l'autenticazione dell'esportazione. L'account di servizio deve essere di proprietà dello stesso project_id utilizzato per la creazione del trasferimento e deve disporre di tutte le autorizzazioni richieste elencate sopra.
  • Gestisci un'esportazione esistente tramite l'interfaccia utente o la riga di comando di BigQuery:

  • Nota: l'esportazione viene eseguita come utente che ha configurato l'account, indipendentemente da chi aggiorna la configurazione dell'esportazione in futuro. Ad esempio, se l'esportazione viene configurata utilizzando un account di servizio e in un secondo momento un utente umano aggiorna la configurazione dell'esportazione tramite l'interfaccia utente di BigQuery Data Transfer Service, l'esportazione continuerà a essere eseguita come account di servizio. In questo caso, il controllo dell'autorizzazione per 'recommender.resources.export' viene eseguito per l'account di servizio ogni volta che viene eseguita l'esportazione.