Exportar recomendaciones a BigQuery

Descripción general

Con BigQuery Export, puedes ver instantáneas diarias de las recomendaciones para tu organización. Esto se hace con el Servicio de transferencia de datos de BigQuery. Consulta este documento para ver qué recomendadores se incluyen en BigQuery Export actualmente.

Antes de comenzar

Completa los siguientes pasos antes de crear una transferencia de datos para las recomendaciones:

  • Permite que el Servicio de transferencia de datos de BigQuery administre tu transferencia de datos. Si usas la IU web de BigQuery para crear la transferencia, debes permitir que las ventanas emergentes de console.cloud.google.com en tu navegador puedan ver los permisos. Para obtener más detalles, consulta Habilita un Servicio de transferencia de datos de BigQuery.
  • Crea un conjunto de datos de BigQuery para almacenar datos.
    • La transferencia de datos usa la misma región donde se crea el conjunto de datos. La ubicación no se puede cambiar una vez que se crean el conjunto de datos y la transferencia.
    • El conjunto de datos contendrá estadísticas y recomendaciones de todas las regiones del mundo. Por lo tanto, esta operación agregaría todos esos datos a una región global durante el proceso. Consulta Atención al cliente de Google Cloud si tienes problemas con la residencia de los datos.
    • Si la ubicación del conjunto de datos se lanzó recientemente, puede haber un retraso en la disponibilidad inicial de los datos de exportación.

Precios

La exportación de recomendaciones a BigQuery está disponible para todos los clientes del recomendador según su nivel de precios de recomendador.

Permisos necesarios

Cuando configuras la transferencia de datos, necesitas los siguientes permisos a nivel del proyecto en el que creas una transferencia de datos:

  • bigquery.transfers.update: Te permite crear la transferencia.
  • bigquery.datasets.update: Te permite actualizar las acciones en el conjunto de datos de destino.
  • resourcemanager.projects.update: Te permite seleccionar un proyecto en el que deseas que se almacenen los datos de exportación.
  • pubsub.topics.list: Te permite seleccionar un tema de Pub/Sub para recibir notificaciones de tu exportación.

El siguiente permiso es obligatorio a nivel de la organización. Esta organización corresponde a la organización para la cual se está configurando la exportación.

  • recommender.resources.export: Te permite exportar recomendaciones a BigQuery.

Se requieren los siguientes permisos a fin de exportar precios negociados para recomendaciones de ahorro de costos:

  • billing.resourceCosts.get at project level: Te permite exportar precios negociados para las recomendaciones a nivel del proyecto.
  • billing.accounts.getSpendingInformation at billing account level: Te permite exportar precios negociados para las recomendaciones a nivel de la cuenta de facturación.

Sin estos permisos, las recomendaciones de ahorro de costos se exportarán con precios estándar en lugar de precios negociados.

Otorga permisos

Debes otorgar las siguientes funciones en el proyecto en el que creas la transferencia de datos:

    Para crear una transferencia y acciones de actualización en el conjunto de datos de destino, debes otorgar la siguiente función:

  • Función de administrador de BigQuery: roles/bigquery.admin
  • Existen varias funciones que contienen permisos que buscan seleccionar un proyecto a fin de almacenar los datos de exportación y seleccionar un tema de Pub/Sub para recibir notificaciones. Para habilitar la disponibilidad de estos dos permisos, puedes otorgar la siguiente función:

  • Función de propietario del proyecto: roles/owner
  • Hay varios roles que contienen el permiso billing.resourceCosts.get a fin de exportar los precios negociados para las recomendaciones de nivel de proyecto de ahorro de costos; puedes otorgar cualquiera de ellas:

  • Rol de Propietario del proyecto: roles/owner
  • Rol de Visualizador del proyecto: roles/viewer
  • Rol de Editor del proyecto: roles/editor
  • Hay varias roles que contienen el permiso billing.accounts.getSpendingInformation para exportar precios negociados a fin de obtener recomendaciones de nivel de cuenta de facturación de ahorro de costos. Puedes otorgar cualquiera de ellos:

  • Rol de Administrador de cuentas de facturación: roles/billing.admin
  • Rol de Administrador de costos de la cuenta de facturación: roles/billing.costsManager
  • Rol de Visualizador de cuentas de facturación: roles/billing.viewer

Debes otorgar el siguiente rol a nivel de la organización:

  • Rol de Exportador de recomendaciones (roles/recommender.exporter) en la consola de Google Cloud.

También puedes crear funciones personalizadas que contengan los permisos necesarios.

Crea una transferencia de datos para las recomendaciones

  1. Accede a la consola de Google Cloud.

    Accede a la consola de Google Cloud

  2. En la pantalla Página principal, haz clic en la pestaña Recomendaciones.

  3. Haz clic en Exportar para ver el formulario de BigQuery Export.

  4. Selecciona un Proyecto de destino para almacenar los datos de recomendaciones y haz clic en Siguiente.

  5. Haz clic en Habilitar API a fin de habilitar las API de BigQuery para la exportación. Esto puede tardar varios segundos en completarse. Cuando finalice, haz clic en Continuar.

  6. En el formulario Configurar transferencia, proporciona los siguientes detalles:

    • En la sección Nombre de configuración de la transferencia (Transfer config name), en Nombre visible (Display name), ingresa el nombre de la transferencia. El nombre de la transferencia puede ser cualquier valor que te permita identificarla con facilidad si es necesario hacerle modificaciones más tarde.

    • En la sección Schedule options (Opciones de programación), en Programar (Schedule), deja el valor predeterminado [Start now (Comenzar ahora)] o haz clic en Start at a set time (Comenzar a una hora determinada).

      • En Repeticiones (Repeats), selecciona una opción para la frecuencia con la que se ejecutará la transferencia.

        • Diaria (predeterminada)
        • Semanal
        • Mensual
        • Personalizada
        • A pedido
      • En Fecha de inicio y hora de ejecución (Start date and run time), ingresa la fecha y hora para iniciar la transferencia. Si seleccionas Start now (Comenzar ahora), esta opción se inhabilitará.

    • En la sección Destination settings (Configuración de destino), en Destination dataset (Conjunto de datos de destino), selecciona el conjunto de datos que creaste para almacenar tus datos.

    • En la sección Detalles de fuente de datos (Data source details):

      • El valor predeterminado de organization_id corresponde a la organización cuyas recomendaciones ves actualmente. Si deseas exportar recomendaciones a otra organización, puedes cambiar esto en la consola, en el visualizador de la organización.

    • (Opcional) En la sección Opciones de notificación:

      • Haz clic en el botón de activación para habilitar las notificaciones por correo electrónico. Cuando habilitas esta opción, el administrador de transferencias recibe una notificación por correo electrónico cuando falla una ejecución de transferencia.
      • En Seleccionar un tema de Cloud Pub/Sub (Select a Cloud Pub/Sub topic), elige el nombre de tu tema o haz clic en Crear un tema (Create a topic). Con esta opción, se configuran las notificaciones de ejecución de Pub/Sub para tu transferencia.

  7. Haz clic en Crear para crear la transferencia.

  8. Haz clic en Permitir en la ventana emergente de consentimiento.

  9. Una vez creada la transferencia, se te redireccionará al Centro de recomendaciones. Puedes hacer clic en el vínculo para acceder a los detalles de configuración de la transferencia. Como alternativa, puedes acceder a las transferencias si haces lo siguiente:

    • Ve a la página de BigQuery en la consola de Google Cloud.

      Ir a la página de BigQuery

    • Haz clic en Transferencias de datos. Puedes ver todas las transferencias de datos disponibles.

Visualiza el historial de ejecuciones de una transferencia

Para ver el historial de ejecuciones de una transferencia, haz lo siguiente:

  1. Ve a la página de BigQuery en la consola de Google Cloud.

    Ir a la página de BigQuery

  2. Haz clic en Transferencias de datos. Puedes ver todas las transferencias de datos disponibles.

  3. Haz clic en la transferencia correspondiente en la lista.

  4. En la lista de transferencias de ejecución que se muestran debajo de la pestaña EJECUTAR HISTORIAL, selecciona la transferencia cuyos detalles deseas ver.

  5. Se muestra el panel Detalles del proceso de la transferencia que seleccionaste. Estos son algunos de los detalles de ejecución posibles:

    • Se aplaza la transferencia porque los datos de origen no están disponibles.
    • Se muestra un trabajo en el que se indica la cantidad de filas exportadas a una tabla.
    • Faltan permisos que debes otorgar para una fuente de datos y, luego, programar un reabastecimiento.

¿Cuándo se exportan tus datos?

Cuando creas una transferencia de datos, la primera exportación se produce en dos días. Después de la primera exportación, los trabajos de exportación se ejecutan a la cadencia que solicitaste en el momento de la configuración. Se aplican las siguientes condiciones:

  • El trabajo de exportación de un día específico (D) exporta los datos del final del día (D) a tu conjunto de datos de BigQuery, que suele finalizar al final del día siguiente (D+1). El trabajo de exportación se ejecuta en la zona horaria PST y puede parecer que tiene un retraso adicional en otras zonas horarias.

  • El trabajo de exportación diario no se ejecuta hasta que todos los datos de exportación estén disponibles. Esto puede generar variaciones y, a veces, demoras en el día y la hora en que se actualiza el conjunto de datos. Por lo tanto, es mejor usar la instantánea más reciente disponible de datos en lugar de tener una dependencia sensible a los tiempos difíciles en tablas con fecha específica.

Mensajes de estado comunes en una exportación

Obtén información sobre los mensajes de estado comunes que puedes ver cuando exportas recomendaciones a BigQuery.

El usuario no tiene el permiso necesario

El siguiente mensaje ocurre cuando el usuario no tiene el permiso recommender.resources.export. Verás el siguiente mensaje:

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

A fin de resolver este problema, otorga la función de IAM roles/recommender.exporter a user/service account a fin de configurar la exportación a nivel de la organización para la que se configuró la exportación. Se puede otorgar a través de los comandos de gcloud siguientes:

  • En caso de usuario:

    gcloud organizations add-iam-policy-binding *<organization_id>* --member='user:*<user_name>*' --role='roles/recommender.exporter'
    
  • En el caso de la cuenta de servicio:

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

Se aplaza la transferencia porque los datos de origen no están disponibles

El siguiente mensaje ocurre cuando la transferencia se reprograma porque los datos de origen aún no están disponibles. No representa un error. Significa que las canalizaciones de exportación aún no se completaron por el día. La transferencia se volverá a ejecutar a la nueva hora programada y se realizará de manera correcta una vez que se completen las canalizaciones de exportación. Verás el siguiente mensaje:

Transfer deferred due to source data not being available

No se encontraron los datos de origen

El siguiente mensaje ocurre cuando se completan las canalizaciones de F1toPlacer, pero no se encontraron recomendaciones ni estadísticas para la organización para la que se configuró la exportación. Verás el siguiente mensaje:

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

Este mensaje ocurre por los siguientes motivos:

  • El usuario configuró la exportación hace menos de 2 días. La guía del cliente informa a los clientes que hay un retraso de un día antes de que la exportación esté disponible.
  • No hay recomendaciones o estadísticas disponibles para su organización en el día específico. Este podría ser el caso real o que las canalizaciones se hayan ejecutado antes de que todas las recomendaciones o estadísticas estuvieran disponibles para el día.

Ver tablas para realizar una transferencia

Cuando exportas recomendaciones a BigQuery, el conjunto de datos contiene dos tablas particionadas por fecha:

  • recommendations_export
  • insight_export

Para obtener más información sobre las tablas y el esquema, consulta Crea y usa tablas y Especifica un esquema.

Para ver las tablas de una transferencia de datos, haz lo siguiente:

  1. Ve a la página de BigQuery en la consola de Google Cloud. Ir a la página de BigQuery

  2. Haz clic en Transferencias de datos. Puedes ver todas las transferencias de datos disponibles.

  3. Haz clic en la transferencia correspondiente en la lista.

  4. Haz clic en la pestaña CONFIGURATION y en el conjunto de datos.

  5. En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos. La descripción y los detalles aparecen en el panel de detalles. Las tablas para un conjunto de datos se enumeran con el nombre del conjunto de datos en el panel Explorador.

Programa un reabastecimiento

Se pueden exportar las recomendaciones de una fecha pasada (siendo esta posterior a la fecha en que la organización se incluyó a la exportación) mediante la programación de un reabastecimiento. Para programar un reabastecimiento, haz lo siguiente:

  1. Ve a la página de BigQuery en la consola de Google Cloud.

    Ir a la página de BigQuery

  2. Haz clic en Transferencias de datos.

  3. En la página Transferencias, haz clic en la transferencia apropiada en la lista.

    1. Haz clic en Programar reabastecimiento (Schedule Backfill).

    2. En el cuadro de diálogo Programar reabastecimiento (Schedule backfill), elige la Fecha de inicio (Start date) y la Fecha de finalización (End date).

Para obtener más información sobre cómo trabajar con transferencias, consulta Trabaja con transferencias.

Consultas de ejemplo

Puedes usar las siguientes consultas de muestra para analizar los datos exportados.

Visualiza los ahorros de costos de las recomendaciones en las que la duración de la recomendación se muestra en días

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"

Visualiza la lista de funciones de IAM sin usar

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

Visualiza una lista de funciones otorgadas que deben reemplazarse por funciones más pequeñas

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

Visualiza las estadísticas de una recomendación

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)

Consulta las recomendaciones para los proyectos que pertenecen a una carpeta específica

Esta consulta muestra carpetas superiores del proyecto, hasta cinco niveles.

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

Consulta las recomendaciones para la última fecha disponible disponible exportada hasta el momento

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 Hojas de cálculo para explorar los datos de BigQuery

Como alternativa a la ejecución de consultas en BigQuery, puedes acceder, analizar, visualizar y compartir miles de millones de filas de datos de BigQuery desde tu hoja de cálculo con hojas conectadas, el nuevo conector de datos de BigQuery. Para obtener más información, consulta Comenzar a usar los datos de BigQuery en Hojas de cálculo de Google.

Configura la exportación con la línea de comandos de BigQuery y la API de REST

  • Obtén los permisos necesarios

    Puedes obtener los permisos necesarios de Identity and Access Management a través de la consola de Google Cloud o la línea de comandos.

    Por ejemplo, a fin de usar la línea de comandos para obtener el permiso recommender.resources.export de nivel de la organización para la cuenta de servicio, haz lo siguiente:

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

  • Crea un conjunto de datos y habilita la API de BigQuery

  • Inscribe el proyecto en la fuente de datos de BigQuery

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

  • Crea la exportación:

    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
    

    Aquí:

    • project_id es el ID del proyecto.
    • dataset es el ID del conjunto de datos de destino para la configuración de la transferencia.
    • name es el nombre visible de la configuración de transferencia. El nombre de la transferencia puede ser cualquier valor que te permita identificarla con facilidad si necesitas modificarla más tarde.
    • parameters contiene los parámetros para la configuración de la transferencia creada en formato JSON. Para las estadísticasy recomendaciones BigQuery Export, debes proporcionar el ID de la organización para el que se deben exportar las recomendaciones y las estadísticas. Formato de los parámetros: '{"organization_id":"<org id>"}'
    • data_source Fuente de datos para usar: '6063d10f-0000-2c12-a706-f403045e6250'
    • service_account_name es el nombre de la cuenta de servicio que se usa para autenticar tu exportación. La cuenta de servicio debe ser propiedad del mismo project_id que se usa para crear la transferencia y debe tener todos los permisos necesarios enumerados antes.
  • Administra una exportación existente a través de la IU o la línea de comandos de BigQuery:

  • Nota: La exportación se ejecuta como el usuario que configuró la cuenta, sin importar quién actualice la configuración de exportación en el futuro. Por ejemplo, si la exportación se configura con una cuenta de servicio y, luego, un usuario humano actualiza la configuración de exportación a través de la IU del Servicio de transferencia de datos de BigQuery, la exportación seguirá ejecutándose como la cuenta de servicio. En este caso, se verifica que la cuenta de servicio tenga el permiso “recommender.resources.export” cada vez que se ejecuta la exportación.