Crear una vista autorizada


En este instructivo, crearás una vista autorizada en BigQuery que usarán tus analistas de datos. Las vistas autorizadas te permiten compartir resultados de consultas con usuarios y grupos específicos sin darles acceso a los datos de origen subyacentes. Se otorga acceso a los datos fuente a la vista, en lugar de a un usuario o grupo. También puedes usar la consulta en SQL de la vista para excluir columnas y campos de los resultados de la consulta.

Un enfoque alternativo al uso de una vista autorizada sería configurar controles de acceso a nivel de la columna en los datos de origen y, luego, otorgar a los usuarios acceso a una vista que consulte los datos con control de acceso. Para obtener más información sobre los controles de acceso a nivel de columna, consulta Introducción al control de acceso a nivel de columna.

Si tienes varias vistas autorizadas que acceden al mismo conjunto de datos fuente, puedes autorizar el conjunto de datos que contiene las vistas en lugar de autorizar una vista individual.

Objetivos

  • Crea un conjunto de datos que contenga tus datos fuente.
  • Ejecuta una consulta para cargar datos en una tabla de destino en el conjunto de datos de origen.
  • Crea un conjunto de datos que contenga tu vista autorizada.
  • Crea una vista autorizada a partir de una consulta en SQL que restrinja las columnas que tus analistas de datos pueden ver en los resultados de la consulta.
  • Otorga a tus analistas de datos permiso para ejecutar trabajos de consulta.
  • Otorga a tus analistas de datos acceso al conjunto de datos que contiene la vista autorizada.
  • Otorga acceso de vista autorizado al conjunto de datos fuente.

Costos

En este documento, usarás los siguientes componentes facturables de Trusted Cloud by S3NS:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.

Es posible que los usuarios de Trusted Cloud nuevos cumplan con los requisitos para acceder a una prueba gratuita.

Cuando completes las tareas que se describen en este documento, podrás borrar los recursos que creaste para evitar que se te siga facturando. Para obtener más información, consulta Realiza una limpieza.

Antes de comenzar

  1. In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.

    Go to project selector

  2. Verify that billing is enabled for your Trusted Cloud project.

  3. Enable the BigQuery API.

    Enable the API

  4. Asegúrate de tener los permisos necesarios para realizar las tareas de este documento.
  5. Crea un conjunto de datos para almacenar tus datos fuente

    En primer lugar, debes crear un conjunto de datos para almacenar tus datos de origen.

    Para crear tu conjunto de datos fuente, elige una de las siguientes opciones:

    Console

    1. Ve a la página de BigQuery.

      Ir a BigQuery

    2. En el panel Explorador, junto al proyecto en el que deseas crear el conjunto de datos, haz clic en Ver acciones > Crear conjunto de datos.

    3. En la página Crear conjunto de datos, haz lo siguiente:

      1. En ID del conjunto de datos, ingresa github_source_data.

      2. En Tipo de ubicación, verifica que esté seleccionada la opción Multirregión.

      3. En Multirregión, elige EE.UU. o UE. Todos los recursos que crees en este instructivo deben estar en la misma ubicación multirregional.

      4. Haz clic en Crear conjunto de datos.

    SQL

    Usa la declaración DDL CREATE SCHEMA:

    1. En la consola de Trusted Cloud , ve a la página BigQuery.

      Ir a BigQuery

    2. En el editor de consultas, escribe la siguiente sentencia:

      CREATE SCHEMA github_source_data;

    3. Haz clic en Ejecutar.

    Para obtener más información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.

    Java

    Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

    Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

    // Create a source dataset to store your table.
    Dataset sourceDataset = bigquery.create(DatasetInfo.of(sourceDatasetId));

    Python

    Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

    Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

    from google.cloud import bigquery
    from google.cloud.bigquery.enums import EntityTypes
    
    client = bigquery.Client()
    source_dataset_id = "github_source_data"
    source_dataset_id_full = "{}.{}".format(client.project, source_dataset_id)
    
    
    source_dataset = bigquery.Dataset(source_dataset_id_full)
    # Specify the geographic location where the dataset should reside.
    source_dataset.location = "US"
    source_dataset = client.create_dataset(source_dataset)  # API request

    Crea una tabla y carga tus datos de origen

    Después de crear el conjunto de datos fuente, propaga una tabla en él guardando los resultados de una consulta en SQL en una tabla de destino. La consulta recupera datos del conjunto de datos públicos de GitHub.

    Console

    1. Ve a la página de BigQuery.

      Ir a BigQuery

    2. En el editor de consultas, ingresa la consulta siguiente:

      SELECT
        commit,
        author,
        committer,
        repo_name
      FROM
        `bigquery-public-data.github_repos.commits`
      LIMIT
        1000;
      
    3. Haz clic en Más y selecciona Configuración de consulta.

    4. En Destino, selecciona Establecer una tabla de destino para los resultados de la consulta.

    5. En Conjunto de datos, ingresa PROJECT_ID.github_source_data.

      Reemplaza PROJECT_ID con el ID del proyecto.

    6. En ID de tabla, ingresa github_contributors.

    7. Haz clic en Guardar.

    8. Haz clic en Ejecutar.

    9. Cuando se complete la consulta, en el panel Explorador, expande github_source_data y, luego, haz clic en github_contributors.

    10. Para verificar que los datos se escribieron en la tabla, haz clic en la pestaña Vista previa.

    Java

    Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

    Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

    // Populate a source table
    String tableQuery =
        "SELECT commit, author, committer, repo_name"
            + " FROM `bigquery-public-data.github_repos.commits`"
            + " LIMIT 1000";
    QueryJobConfiguration queryConfig =
        QueryJobConfiguration.newBuilder(tableQuery)
            .setDestinationTable(TableId.of(sourceDatasetId, sourceTableId))
            .build();
    bigquery.query(queryConfig);

    Python

    Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

    Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

    source_table_id = "github_contributors"
    job_config = bigquery.QueryJobConfig()
    job_config.destination = source_dataset.table(source_table_id)
    sql = """
        SELECT commit, author, committer, repo_name
        FROM `bigquery-public-data.github_repos.commits`
        LIMIT 1000
    """
    client.query_and_wait(
        sql,
        # Location must match that of the dataset(s) referenced in the query
        # and of the destination table.
        location="US",
        job_config=job_config,
    )  # API request - starts the query and waits for query to finish

    Crea un conjunto de datos para almacenar tu vista autorizada

    Después de crear tu conjunto de datos fuente, crearás un conjunto de datos nuevo y separado para almacenar la vista autorizada que compartirás con tus analistas de datos. En un paso posterior, otorgarás acceso de vista autorizado a los datos en el conjunto de datos fuente. Tus analistas de datos tendrán acceso a la vista autorizada, pero no al acceso directo a los datos de origen.

    Las vistas autorizadas se deben crear en un conjunto de datos diferente a partir de los datos de origen. De esta manera, los propietarios de datos pueden otorgar a los usuarios acceso a la vista autorizada sin otorgar acceso simultáneo a los datos subyacentes. El conjunto de datos de origen y el de vista autorizada deben estar en la misma ubicación regional.

    Para crear un conjunto de datos en el que se almacenará tu vista, elige una de las siguientes opciones:

    Console

    1. Ve a la página de BigQuery.

      Ir a BigQuery

    2. En el panel Explorador, selecciona el proyecto en el que deseas crear el conjunto de datos.

    3. Expande la opción Ver acciones y haz clic en Crear conjunto de datos.

    4. En la página Crear conjunto de datos, haz lo siguiente:

      1. En ID del conjunto de datos, ingresa shared_views.

      2. En Tipo de ubicación, verifica que esté seleccionada la opción Multirregión.

      3. En Multirregión, elige EE.UU. o UE. Todos los recursos que crees en este instructivo deben estar en la misma ubicación multirregional.

      4. Haz clic en Crear conjunto de datos.

    SQL

    Usa la declaración DDL CREATE SCHEMA:

    1. En la consola de Trusted Cloud , ve a la página BigQuery.

      Ir a BigQuery

    2. En el editor de consultas, escribe la siguiente sentencia:

      CREATE SCHEMA shared_views;

    3. Haz clic en Ejecutar.

    Para obtener más información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.

    Java

    Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

    Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

    // Create a separate dataset to store your view
    Dataset sharedDataset = bigquery.create(DatasetInfo.of(sharedDatasetId));

    Python

    Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

    Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

    shared_dataset_id = "shared_views"
    shared_dataset_id_full = "{}.{}".format(client.project, shared_dataset_id)
    
    
    shared_dataset = bigquery.Dataset(shared_dataset_id_full)
    shared_dataset.location = "US"
    shared_dataset = client.create_dataset(shared_dataset)  # API request

    Crea la vista autorizada en el conjunto de datos nuevo

    En el conjunto de datos nuevo, crearás la vista que deseas autorizar. Esta es la vista que compartes con tus analistas de datos. Esta vista se crea con una consulta en SQL que excluye las columnas que no deseas que vean los analistas de datos.

    La tabla de origen github_contributors contiene dos campos de tipo RECORD: author y committer. Para este instructivo, tu vista autorizada excluye todos los datos del autor, excepto su nombre, y todos los datos del confirmador, excepto su nombre.

    Para crear la vista en el conjunto de datos nuevo, elige una de las siguientes opciones:

    Console

    1. Ve a la página de BigQuery.

      Ir a BigQuery

    2. En el editor de consultas, ingresa la siguiente consulta.

      SELECT
      commit,
      author.name AS author,
      committer.name AS committer,
      repo_name
      FROM
      `PROJECT_ID.github_source_data.github_contributors`;

      Reemplaza PROJECT_ID con el ID del proyecto.

    3. Haz clic en Guardar > Guardar vista.

    4. En el cuadro de diálogo Guardar vista, haz lo siguiente:

      1. Para Proyecto, verifica que tu proyecto esté seleccionado.

      2. En Conjunto de datos, ingresa shared_views.

      3. En Tabla, ingresa github_analyst_view.

      4. Haz clic en Guardar.

    SQL

    Usa la declaración DDL CREATE VIEW:

    1. En la consola de Trusted Cloud , ve a la página BigQuery.

      Ir a BigQuery

    2. En el editor de consultas, ingresa la siguiente sentencia:

      CREATE VIEW shared_views.github_analyst_view
      AS (
        SELECT
          commit,
          author.name AS author,
          committer.name AS committer,
          repo_name
        FROM
          `PROJECT_ID.github_source_data.github_contributors`
      );

      Reemplaza PROJECT_ID con el ID del proyecto.

    3. Haz clic en Ejecutar.

    Para obtener más información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.

    Java

    Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

    Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

    // Create the view in the new dataset
    String viewQuery =
        String.format(
            "SELECT commit, author.name as author, committer.name as committer, repo_name FROM %s.%s.%s",
            projectId, sourceDatasetId, sourceTableId);
    
    ViewDefinition viewDefinition = ViewDefinition.of(viewQuery);
    
    Table view =
        bigquery.create(TableInfo.of(TableId.of(sharedDatasetId, sharedViewId), viewDefinition));

    Python

    Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

    Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

    shared_view_id = "github_analyst_view"
    view = bigquery.Table(shared_dataset.table(shared_view_id))
    sql_template = """
        SELECT
            commit, author.name as author,
            committer.name as committer, repo_name
        FROM
            `{}.{}.{}`
    """
    view.view_query = sql_template.format(
        client.project, source_dataset_id, source_table_id
    )
    view = client.create_table(view)  # API request

    Otorga permiso a tus analistas de datos para ejecutar trabajos de consulta

    Para consultar la vista, los analistas de datos necesitan el permiso de bigquery.jobs.create para poder ejecutar trabajos de consulta y se les debe otorgar acceso a la vista. En esta sección, otorgarás el rol bigquery.user a tus analistas de datos. El rol bigquery.user incluye el permiso bigquery.jobs.create. En un paso posterior, otorgarás a tus analistas de datos permiso para acceder a la vista.

    Para asignar el grupo de analistas de datos al rol bigquery.user a nivel del proyecto, haz lo siguiente:

    1. En la consola de Trusted Cloud , ve a la página IAM.

      Ir a IAM

    2. Asegúrate de que tu proyecto esté seleccionado en el selector de proyectos.

    3. Haz clic en Otorgar acceso.

    4. En el cuadro de diálogo Otorga acceso a, haz lo siguiente:

      1. En el campo Nuevos principales, ingresa el grupo que contiene a tus analistas de datos. Por ejemplo, data_analysts@example.com

      2. En el campo Seleccionar un rol, busca el rol Usuario de BigQuery y selecciónalo.

      3. Haz clic en Guardar.

    Otorga a tus analistas de datos permiso para consultar la vista autorizada

    Para que los analistas de datos consulten la vista, se les debe otorgar el rol bigquery.dataViewer a nivel del conjunto de datos o de la vista. Si otorgas este rol a nivel del conjunto de datos, tus analistas tendrán acceso a todas las tablas y vistas del conjunto de datos. Debido a que el conjunto de datos creado en este instructivo contiene una sola vista autorizada, otorgarás acceso a nivel del conjunto de datos. Si tienes una colección de vistas autorizadas a las que necesitas otorgar acceso, considera usar un conjunto de datos autorizado.

    El rol bigquery.user que otorgaste a tus analistas de datos anteriormente les brinda los permisos necesarios para crear trabajos de consulta. Sin embargo, no pueden consultar la vista de forma correcta, a menos que también tengan acceso bigquery.dataViewer a la vista autorizada o al conjunto de datos que contiene la vista.

    Para otorgar a los analistas de datos el acceso bigquery.dataViewer al conjunto de datos que contiene la vista autorizada, haz lo siguiente:

    Console

    1. Ve a la página de BigQuery.

      Ir a BigQuery

    2. En el panel Explorador, selecciona el conjunto de datos shared_views para abrir la pestaña Detalles.

    3. Haz clic en Compartir > Permisos.

    4. En el panel Permisos de uso compartido, haz clic en Agregar principal.

    5. En Nuevos principales, ingresa el grupo que contiene a tus analistas de datos (por ejemplo, data_analysts@example.com).

    6. Haz clic en Seleccionar un rol y selecciona BigQuery > Visualizador de datos de BigQuery.

    7. Haz clic en Guardar.

    8. Haz clic en Cerrar.

    Java

    Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

    Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

    // Assign access controls to the dataset containing the view
    List<Acl> viewAcl = new ArrayList<>(sharedDataset.getAcl());
    viewAcl.add(Acl.of(new Acl.Group("example-analyst-group@google.com"), Acl.Role.READER));
    sharedDataset.toBuilder().setAcl(viewAcl).build().update();

    Python

    Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

    Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

    # analyst_group_email = 'data_analysts@example.com'
    access_entries = shared_dataset.access_entries
    access_entries.append(
        bigquery.AccessEntry("READER", EntityTypes.GROUP_BY_EMAIL, analyst_group_email)
    )
    shared_dataset.access_entries = access_entries
    shared_dataset = client.update_dataset(
        shared_dataset, ["access_entries"]
    )  # API request

    Autoriza la vista para acceder al conjunto de datos fuente

    Después de crear los controles de acceso para el conjunto de datos que contiene la vista autorizada, otorga acceso de vista autorizada al conjunto de datos fuente. Esta autorización le otorga a la vista, pero no al grupo de analistas de datos, acceso a los datos fuente.

    Para otorgar acceso a los datos fuente a la vista autorizada, elige una de estas opciones:

    Console

    1. Ve a la página de BigQuery.

      Ir a BigQuery

    2. En el panel Explorador, selecciona el conjunto de datos github_source_data para abrir la pestaña Detalles.

    3. Haz clic en Compartir > Autorizar vistas.

    4. En el panel Vistas autorizadas, ingresa PROJECT_ID.shared_views.github_analyst_view en Vista autorizada.

      Reemplaza PROJECT_ID con el ID del proyecto.

    5. Haz clic en Agregar autorización.

    Java

    Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

    Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

    // Authorize the view to access the source dataset
    List<Acl> srcAcl = new ArrayList<>(sourceDataset.getAcl());
    srcAcl.add(Acl.of(new Acl.View(view.getTableId())));
    sourceDataset.toBuilder().setAcl(srcAcl).build().update();

    Python

    Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

    Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

    access_entries = source_dataset.access_entries
    access_entries.append(
        bigquery.AccessEntry(None, EntityTypes.VIEW, view.reference.to_api_repr())
    )
    source_dataset.access_entries = access_entries
    source_dataset = client.update_dataset(
        source_dataset, ["access_entries"]
    )  # API request

    Verifica la configuración

    Cuando se completa la configuración, un miembro de tu grupo de analistas de datos (por ejemplo, data_analysts) puede realizar una consulta en la vista para verificar la configuración.

    Para verificar la configuración, un analista de datos debe ejecutar la siguiente consulta:

    1. Ve a la página de BigQuery.

      Ir a BigQuery

    2. En el editor de consultas, ingresa la siguiente sentencia:

      SELECT
        *
      FROM
        `PROJECT_ID.shared_views.github_analyst_view`;

      Reemplaza PROJECT_ID con el ID del proyecto.

    3. Haz clic en Ejecutar.

    Los resultados de la búsqueda son similares a los siguientes. En los resultados, solo se ven el nombre del autor y el nombre del confirmador.

    Los resultados de la consulta después de consultar la vista autorizada

    Para obtener más información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.

    Código fuente completo

    Aquí se muestra el código fuente completo del instructivo a modo de referencia.

    Java

    Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

    Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

    // Create a source dataset to store your table.
    Dataset sourceDataset = bigquery.create(DatasetInfo.of(sourceDatasetId));
    
    // Populate a source table
    String tableQuery =
        "SELECT commit, author, committer, repo_name"
            + " FROM `bigquery-public-data.github_repos.commits`"
            + " LIMIT 1000";
    QueryJobConfiguration queryConfig =
        QueryJobConfiguration.newBuilder(tableQuery)
            .setDestinationTable(TableId.of(sourceDatasetId, sourceTableId))
            .build();
    bigquery.query(queryConfig);
    
    // Create a separate dataset to store your view
    Dataset sharedDataset = bigquery.create(DatasetInfo.of(sharedDatasetId));
    
    // Create the view in the new dataset
    String viewQuery =
        String.format(
            "SELECT commit, author.name as author, committer.name as committer, repo_name FROM %s.%s.%s",
            projectId, sourceDatasetId, sourceTableId);
    
    ViewDefinition viewDefinition = ViewDefinition.of(viewQuery);
    
    Table view =
        bigquery.create(TableInfo.of(TableId.of(sharedDatasetId, sharedViewId), viewDefinition));
    
    // Assign access controls to the dataset containing the view
    List<Acl> viewAcl = new ArrayList<>(sharedDataset.getAcl());
    viewAcl.add(Acl.of(new Acl.Group("example-analyst-group@google.com"), Acl.Role.READER));
    sharedDataset.toBuilder().setAcl(viewAcl).build().update();
    
    // Authorize the view to access the source dataset
    List<Acl> srcAcl = new ArrayList<>(sourceDataset.getAcl());
    srcAcl.add(Acl.of(new Acl.View(view.getTableId())));
    sourceDataset.toBuilder().setAcl(srcAcl).build().update();

    Python

    Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

    Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

    # Create a source dataset
    from google.cloud import bigquery
    from google.cloud.bigquery.enums import EntityTypes
    
    client = bigquery.Client()
    source_dataset_id = "github_source_data"
    source_dataset_id_full = "{}.{}".format(client.project, source_dataset_id)
    
    
    source_dataset = bigquery.Dataset(source_dataset_id_full)
    # Specify the geographic location where the dataset should reside.
    source_dataset.location = "US"
    source_dataset = client.create_dataset(source_dataset)  # API request
    
    # Populate a source table
    source_table_id = "github_contributors"
    job_config = bigquery.QueryJobConfig()
    job_config.destination = source_dataset.table(source_table_id)
    sql = """
        SELECT commit, author, committer, repo_name
        FROM `bigquery-public-data.github_repos.commits`
        LIMIT 1000
    """
    client.query_and_wait(
        sql,
        # Location must match that of the dataset(s) referenced in the query
        # and of the destination table.
        location="US",
        job_config=job_config,
    )  # API request - starts the query and waits for query to finish
    
    # Create a separate dataset to store your view
    shared_dataset_id = "shared_views"
    shared_dataset_id_full = "{}.{}".format(client.project, shared_dataset_id)
    
    
    shared_dataset = bigquery.Dataset(shared_dataset_id_full)
    shared_dataset.location = "US"
    shared_dataset = client.create_dataset(shared_dataset)  # API request
    
    # Create the view in the new dataset
    shared_view_id = "github_analyst_view"
    view = bigquery.Table(shared_dataset.table(shared_view_id))
    sql_template = """
        SELECT
            commit, author.name as author,
            committer.name as committer, repo_name
        FROM
            `{}.{}.{}`
    """
    view.view_query = sql_template.format(
        client.project, source_dataset_id, source_table_id
    )
    view = client.create_table(view)  # API request
    
    # Assign access controls to the dataset containing the view
    # analyst_group_email = 'data_analysts@example.com'
    access_entries = shared_dataset.access_entries
    access_entries.append(
        bigquery.AccessEntry("READER", EntityTypes.GROUP_BY_EMAIL, analyst_group_email)
    )
    shared_dataset.access_entries = access_entries
    shared_dataset = client.update_dataset(
        shared_dataset, ["access_entries"]
    )  # API request
    
    # Authorize the view to access the source dataset
    access_entries = source_dataset.access_entries
    access_entries.append(
        bigquery.AccessEntry(None, EntityTypes.VIEW, view.reference.to_api_repr())
    )
    source_dataset.access_entries = access_entries
    source_dataset = client.update_dataset(
        source_dataset, ["access_entries"]
    )  # API request

    Limpia

    Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

    Borra el proyecto

    Console

    1. In the Trusted Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    gcloud

    1. In the Trusted Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Borra los recursos individuales

    Como alternativa, para quitar los recursos individuales que se usan en este instructivo, haz lo siguiente:

    1. Borra la vista autorizada.

    2. Borra el conjunto de datos que contiene la vista autorizada.

    3. Borra la tabla en el conjunto de datos de origen.

    4. Borra el conjunto de datos de origen.

    Como creaste los recursos que se usan en este instructivo, no se requieren permisos adicionales para borrarlos.

    ¿Qué sigue?