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 realiza 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, retrasos en el d�a y la hora en el que se actualiza tu conjunto de datos. Por lo tanto, es mejor usar la �ltima instant�nea disponible de los datos en lugar de tener una dependencia urgente en tablas con fecha espec�ficas.

Mensajes de estado comunes en una exportaci�n

Obt�n m�s 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 requerido. 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 el rol de IAM roles/recommender.exporter a user/service account y configura la exportaci�n a nivel de organizaci�n de la organizaci�n para la que se configur� la exportaci�n. Se puede proporcionar a trav�s de los comandos de gcloud que se muestran a continuaci�n:

  • 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 est� reprogramada 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 aparece por las siguientes razones:

  • 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 su exportaci�n est� disponible.
  • No hay recomendaciones ni estad�sticas disponibles para su organizaci�n para el d�a espec�fico. Este podr�a ser el caso real, o bien las canalizaciones podr�an haberse 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.

Esquema de exportaci�n

Tabla de exportaci�n de recomendaciones:

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.

Tabla de exportaci�n de estad�sticas:

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.

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.