Crear una vista autorizada


BigQuery es un almacén de datos estadísticos a escala de petabytes que puedes usar para ejecutar consultas de SQL en grandes cantidades de datos casi en tiempo real.

En BigQuery, la acción de otorgar acceso parar ver un conjunto de datos también se conoce como crear una vista autorizada. Una vista autorizada te permite compartir resultados de consultas con usuarios y grupos específicos sin darles acceso a las tablas subyacentes. También puedes usar la consulta de SQL de la vista para restringir las columnas (campos) que los usuarios pueden consultar. En este instructivo, crearás una vista autorizada.

Objetivos

En este instructivo, se muestra cómo completar las siguientes tareas:

  • Crear conjuntos de datos y aplicar controles de acceso a ellos
  • Asignar controles de acceso a tu proyecto
  • Crear una vista autorizada que restrinja los datos que los usuarios pueden consultar

Costos

BigQuery es un producto pago que generará costos de uso en este instructivo. BigQuery ofrece algunos recursos de forma gratuita hasta alcanzar un límite específico. Para obtener más información, consulta Operaciones gratuitas de BigQuery y nivel gratuito.

Antes de comenzar

Antes de comenzar con este instructivo, usa la consola de Google Cloud para crear o seleccionar un proyecto.

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  4. BigQuery se habilita automáticamente en proyectos nuevos. Para activar BigQuery en un proyecto existente, ve a

    Habilita la API de BigQuery.

    Habilita la API

    .
  5. Opcional: Habilita la facturación para el proyecto. Si no deseas habilitar la facturación ni proporcionar una tarjeta de crédito, los pasos que se indican en este documento seguirán funcionando. BigQuery proporciona una zona de pruebas para realizar los pasos. Para obtener más información, consulta Habilita la zona de pruebas de BigQuery.

Crea un conjunto de datos de origen

Comienza creando un conjunto de datos para almacenar tus datos fuente. Para este instructivo, consulta el conjunto de datos públicos GitHub para propagar una tabla en el conjunto de datos fuente. Los datos en tu conjunto de datos fuente contienen información que no deseas que vean tus análisis de datos. Restringe el acceso a los datos con una vista autorizada.

Para crear tu conjunto de datos fuente:

Consola

  1. En la consola de Google Cloud, abre 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 Acciones y haz clic en Crear conjunto de datos.

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

  5. Deja los valores predeterminados para el resto de la configuración y haz clic en Crear conjunto de datos.

SQL

Usa la declaración DDL CREATE SCHEMA:

  1. En la consola de Google Cloud, ve a la página de 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.

// 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.

from google.cloud import bigquery

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

Después de crear el conjunto de datos fuente, propaga una tabla con una consulta de SQL. Esto recupera datos de consulta del conjunto de datos públicos de GitHub.

Consola

  1. En la consola de Google Cloud, abre la página de BigQuery.

    Ir a BigQuery

  2. Copia y pega la siguiente búsqueda en el campo Editor.

    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 Query.

  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 de tu 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, haz clic en github_contributors y, luego, en Vista previa para verificar que los datos se escribieron en la tabla.

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.

// 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.

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
"""
query_job = client.query(
    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

query_job.result()  # Waits for the query to finish

Crea un conjunto de datos en el que puedas almacenar tu vista

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.

Crea un conjunto de datos para almacenar tu vista:

Consola

  1. En la consola de Google Cloud, abre 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 Acciones y haz clic en Crear conjunto de datos.

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

  5. Deja los valores predeterminados para el resto de la configuración y haz clic en Crear conjunto de datos.

SQL

Usa la declaración DDL CREATE SCHEMA:

  1. En la consola de Google Cloud, ve a la página de 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.

// 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.

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 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 de SQL que excluye las columnas que no deseas que vean los analistas de datos.

Para este instructivo, tu vista compartida excluye la información del autor, excepto el nombre del autor, y excluye la información del confirmador, excepto el nombre del confirmador.

Para crear la vista en el conjunto de datos nuevo, sigue estos pasos:

Consola

  1. En la consola de Google Cloud, abre la página de BigQuery.

    Ir a BigQuery

  2. Copia y pega la siguiente búsqueda en el campo Editor. Reemplaza PROJECT_ID con el ID del proyecto.

    SELECT
      commit,
      author.name AS author,
      committer.name AS committer,
      repo_name
    FROM
      `PROJECT_ID.github_source_data.github_contributors`;
    
  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 Google Cloud, ve a la página de 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.

// 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.

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

Asigna una función de IAM a nivel de proyecto a tus analistas de datos

Para consultar la vista, los analistas de datos necesitan permiso para ejecutar trabajos de consulta. La función bigquery.user incluye permisos para ejecutar trabajos, incluidos los trabajos de consulta, dentro del proyecto. Si otorgas a un usuario o grupo la función bigquery.user a nivel del proyecto, el usuario puede crear conjuntos de datos y ejecutar trabajos de consulta en las tablas de esos conjuntos de datos. La función bigquery.user no otorga permiso a los usuarios para consultar datos, ver datos de tabla o ver detalles de esquema de tabla en los conjuntos de datos que el usuario no creó.

Si asignas la función bigquery.user a nivel del proyecto a tus analistas de datos, no se les permitirá ver o consultar datos de tabla en el conjunto de datos que contiene las tablas que consulta la vista. La función bigquery.user tampoco otorga a los usuarios la capacidad de actualizar tus vistas. Se debe asignar la función bigquery.user a nivel del proyecto a la mayoría de los individuos (científicos de datos, analistas de inteligencia empresarial, analistas de datos) de una empresa.

Cuando agregas un grupo a una función de IAM, la dirección de correo electrónico y el dominio deben estar asociados con una Cuenta de Google activa o una cuenta de Google Apps.

Para asignar la función bigquery.user a nivel del proyecto al grupo de analistas de datos, sigue estos pasos:

Consola

  1. Abre la página de IAM en la consola de Google Cloud.

    Abrir la página IAM

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

  3. Haz clic en Otorgar acceso.

  4. En el cuadro de diálogo Otorgar acceso a, sigue estos pasos:

    1. En el cuadro Principales nuevos, ingresa el grupo que contiene a tus analistas de datos (por ejemplo, data_analysts@example.com).
    2. En el cuadro Seleccionar una función, busca la función Usuario de BigQuery y selecciónala.
    3. Haz clic en Guardar.

Asigna controles de acceso al conjunto de datos que contiene la vista

Para que los analistas de datos consulten la vista, se les debe otorgar la función bigquery.dataViewer en el conjunto de datos que contiene la vista. El rol bigquery.user otorga a los analistas de datos 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 al conjunto de datos que contiene la vista.

Para otorgar a los analistas de datos el acceso bigquery.dataViewer al conjunto de datos, sigue estos pasos:

Consola

  1. En la consola de Google Cloud, abre la página de BigQuery.

    Ir a BigQuery

  2. En el panel Explorador, selecciona el conjunto de datos shared_views.

  3. Haz clic en Compartir > Permisos.

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

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

  6. Haz clic en Seleccionar una función 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.

// 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.

# analyst_group_email = 'data_analysts@example.com'
access_entries = shared_dataset.access_entries
access_entries.append(
    bigquery.AccessEntry("READER", "groupByEmail", 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

Una vez que crees los controles de acceso para el conjunto de datos que contiene la vista, agrega la vista como una vista autorizada en el conjunto de datos fuente. Esta autorización le otorga a la vista, pero no al grupo de analistas de datos, acceso a los datos de origen.

Autoriza la vista para acceder a los datos fuente:

Consola

  1. En la consola de Google Cloud, abre la página de BigQuery.

    Ir a BigQuery

  2. En el panel Explorador, selecciona el conjunto de datos github_source_data.

  3. Haz clic en Compartir, y, luego, selecciona Autorizar vistas.

  4. En el panel Vistas autorizadas que se abre, ingresa la vista github_analyst_view en el campo Vistas autorizadas.

  5. Haz clic en Agregar autorización.

La vista github_analyst_view ahora está autorizada para acceder a los datos en el conjunto de datos de origen.

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.

// 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.

access_entries = source_dataset.access_entries
access_entries.append(
    bigquery.AccessEntry(None, "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, sigue estos pasos:

SQL

Haz que un miembro de tu grupo de analistas de datos haga lo siguiente:

  1. En la consola de Google Cloud, 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.

Si deseas obtener 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.

// 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.

# Create a source dataset
from google.cloud import bigquery

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
"""
query_job = client.query(
    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

query_job.result()  # Waits for the 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", "groupByEmail", 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, "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.

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

¿Qué sigue?