Esporta i suggerimenti in BigQuery

Panoramica

Con BigQuery Export puoi visualizzare snapshot giornalieri di suggerimenti per la tua organizzazione. Per farlo, usa BigQuery Data Transfer Service. Consulta questo documento per vedere quali motori per suggerimenti sono inclusi oggi in BigQuery Export.

Prima di iniziare

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

  • Consenti a BigQuery Data Transfer Service di gestire il tuo trasferimento di dati. Se utilizzi l'interfaccia utente web di BigQuery per creare il trasferimento, devi consentire i popup di console.cloud.google.com nel browser per poter visualizzare le autorizzazioni. Per maggiori dettagli, vedi Attivare 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 dopo la creazione del set di dati e del trasferimento.
    • Il set di dati conterrà insight e suggerimenti da tutte le regioni in tutto il mondo. Questa operazione aggrega quindi tutti i dati in una regione globale durante il processo. In caso di dubbi relativi alla residenza dei dati, consulta l'assistenza clienti Google Cloud.
    • Se la posizione del set di dati è stata lanciata da poco, potrebbe verificarsi un ritardo nella disponibilità iniziale dei dati di esportazione.

Prezzi

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

Autorizzazioni obbligatorie

Durante la configurazione del trasferimento di dati, devi disporre delle seguenti autorizzazioni a livello di progetto in cui crei un trasferimento di dati:

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

La seguente autorizzazione è obbligatoria a livello di organizzazione. Questa organizzazione corrisponde a quella per cui viene configurata l'esportazione.

  • recommender.resources.export: consente di esportare i 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 consigli a livello di account di fatturazione

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

Concedi le autorizzazioni

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

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

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

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

  • Ruolo Proprietario progetto - 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 a livello di account di fatturazione Risparmio sui costi. Puoi concedere uno qualsiasi di questi:

  • 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 ruolo seguente a livello di organizzazione:

  • Ruolo Esportatore suggerimenti (roles/recommender.exporter) nella console Google Cloud.

Puoi anche creare ruoli personalizzati contenenti le autorizzazioni richieste.

Crea un trasferimento di dati per i suggerimenti

  1. Accedi alla console Google Cloud.

    Accedi alla console Google Cloud

  2. Nella schermata Home, fai clic sulla scheda Consigli.

  3. Fai clic su Esporta per visualizzare il modulo di esportazione di BigQuery.

  4. Seleziona un progetto di destinazione per archiviare i dati relativi ai consigli e fai clic su Avanti.

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

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

    • Nella sezione Nome configurazione di trasferimento, in 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 seguito.

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

      • In Ripetizioni, scegli un'opzione relativa alla frequenza di esecuzione del trasferimento.

        • Giornaliera (impostazione predefinita)
        • Ogni settimana
        • Mensile
        • 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 viene disattivata.

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

    • Nella sezione Dettagli origine dati:

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

    • (Facoltativo) Nella sezione Opzioni di notifica:

      • Fai clic sul pulsante di attivazione/disattivazione per abilitare le notifiche via email. Quando abiliti questa opzione, l'amministratore dei trasferimenti riceve una notifica via email quando un'esecuzione del trasferimento non va a buon fine.
      • In Seleziona un argomento Pub/Sub, scegli il nome dell'argomento o fai clic su Crea un argomento. Questa opzione configura le notifiche dell'esecuzione di Pub/Sub per il trasferimento.

  7. Fai clic su Crea per creare il trasferimento.

  8. Fai clic su Consenti nella finestra popup del consenso.

  9. Una volta creato il trasferimento, tornerai all'hub dei suggerimenti. Puoi fare clic sul link per accedere ai dettagli di configurazione del trasferimento. In alternativa, puoi accedere ai trasferimenti seguendo questi passaggi:

    • Vai alla pagina BigQuery nella console Google Cloud.

      Vai alla pagina di BigQuery

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

Visualizzare la cronologia delle esecuzioni di un trasferimento

Per visualizzare la cronologia delle esecuzioni di un trasferimento:

  1. Vai alla pagina BigQuery nella console Google Cloud.

    Vai alla pagina di 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 eseguiti nella scheda ESEGUI CRONOLOGIA, seleziona il trasferimento di cui vuoi visualizzare i dettagli.

  5. Viene visualizzato il riquadro Dettagli esecuzione per il trasferimento della singola esecuzione selezionato. Di seguito sono riportati alcuni dettagli delle possibili esecuzioni:

    • Trasferimento differito a causa di dati di origine non disponibili.
    • Job che indica il numero di righe esportate in una tabella
    • Autorizzazioni mancanti per un'origine dati che devi concedere e pianificare in seguito un backfill.

Quando vengono esportati i dati?

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

  • Il job di esportazione di un giorno specifico (D) esporta i dati di fine giornata (D) 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 presenti un ritardo aggiuntivo per altri fusi orari.

  • Il job di esportazione giornaliero non viene eseguito finché tutti i dati per l'esportazione non sono disponibili. Ciò può comportare variazioni e talvolta ritardi nel giorno e nell'ora in cui viene aggiornato il set di dati. Ti consigliamo quindi di utilizzare lo snapshot dei dati più recente disponibile, anziché avere una dipendenza sensibile ai tempi di elaborazione su tabelle con date specifiche.

Messaggi di stato comuni in un'esportazione

Scopri di più sui messaggi di stato comuni che puoi visualizzare nei suggerimenti relativi all'esportazione in BigQuery.

L'utente non dispone dell'autorizzazione richiesta

Il seguente messaggio viene visualizzato quando l'utente non dispone dell'autorizzazione recommender.resources.export richiesta. Verrà 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 questo problema, concedi il ruolo IAM roles/recommender.exporter a user/service account configurando l'esportazione a livello di organizzazione per l'organizzazione per cui è stata configurata. Può essere utilizzato tramite i comandi gcloud seguenti:

  • In caso di utente:

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

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

Trasferimento posticipato perché i dati di origine non sono disponibili

Quando il trasferimento viene ripianificato viene visualizzato il seguente messaggio perché i dati di origine non sono ancora disponibili. Non si tratta di un errore. Significa che le pipeline di esportazione non sono state ancora completate per la giornata. Il trasferimento verrà eseguito di nuovo al nuovo orario pianificato e avrà esito positivo una volta completate le pipeline di esportazione. Verrà visualizzato il seguente messaggio:

Transfer deferred due to source data not being available

Dati di origine non trovati

Il seguente messaggio si verifica quando le pipeline F1toPlacer sono state completate, ma non sono stati trovati consigli o insight per l'organizzazione per cui è stata configurata l'esportazione. Verrà 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 due giorni fa. La guida per i clienti informa i clienti che c'è un giorno di ritardo prima che l'esportazione sia disponibile.
  • Non sono disponibili consigli o approfondimenti per la sua 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.

Visualizza le tabelle per un trasferimento

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

  • recommendations_export
  • insight_export

Per ulteriori dettagli sulle tabelle e sullo schema, consulta Creazione e utilizzo delle tabelle e Specifica di uno schema.

Per visualizzare le tabelle per un trasferimento di dati:

  1. Vai alla pagina BigQuery nella console Google Cloud. Vai alla pagina di 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 Explorer.

Pianifica un backfill

È possibile esportare i suggerimenti per una data nel passato (ovvero successiva a quella in cui l'organizzazione ha attivato l'esportazione) pianificando un backfill. Per pianificare un backfill, segui questi passaggi:

  1. Vai alla pagina BigQuery nella console Google Cloud.

    Vai alla pagina di 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 Data di inizio e Data di fine.

Per ulteriori informazioni sull'uso dei trasferimenti, vedi Utilizzo dei trasferimenti.

Esempi di query

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

Visualizzazione dei risparmi sui costi per i suggerimenti in cui la durata dei suggerimenti è visualizzata 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"

Visualizzazione dell'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"

Visualizzazione di un elenco dei ruoli concessi che devono essere sostituiti con 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 approfondimenti per un consiglio

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 del progetto.

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

Visualizzazione dei consigli per l'ultima data 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

Usa Fogli per esplorare i dati BigQuery

In alternativa all'esecuzione di query su BigQuery, puoi accedere a miliardi di righe di dati BigQuery dal tuo foglio di lavoro e analizzarle, visualizzarle e condividerle con Fogli connessi, il nuovo connettore dati di BigQuery. Per saperne di più, consulta la Guida introduttiva all'utilizzo dei dati di BigQuery in Fogli Google.

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

  • Ottieni le autorizzazioni richieste:

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

    Ad esempio, per utilizzare la riga di comando per ottenere l'autorizzazione Recommendationser.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 set di dati e attiva 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 di trasferimento.
    • name è il nome visualizzato della configurazione di 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 di trasferimento creata in formato JSON. Per BigQuery Export di Recommendations e Insights, devi fornire l'organization_id per cui è necessario esportare suggerimenti e insight. Parameters format: '{"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 autenticare l'esportazione. L'account di servizio deve essere di proprietà dello stesso project_id utilizzato per creare il trasferimento e deve avere 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 di esportazione in futuro. Ad esempio, se l'esportazione viene configurata utilizzando un account di servizio e in seguito un utente umano la aggiorna tramite l'interfaccia utente di BigQuery Data Transfer Service, l'esportazione continuerà a essere eseguita come account di servizio. In questo caso, il controllo delle autorizzazioni per "Recommender.resources.export" viene eseguito per l'account di servizio ogni volta che viene eseguita l'esportazione.