Usa la API de Storage Write (REST)

En este documento, se describe cómo transmitir datos a BigQuery con la API de BigQuery Storage Write (REST), que antes se conocía como el método heredado tabledata.insertAll.

Para los proyectos nuevos, recomendamos usar la API de BigQuery Storage Write (gRPC) en lugar de la API de Storage Write (REST). La API de Storage Write (gRPC) tiene precios más bajos y funciones más sólidas, incluida la semántica de entrega del tipo “exactamente una vez” y la transmisión a tablas administradas de Apache Iceberg. Si migras un proyecto existente de la API de Storage Write (REST) a la API de Storage Write (gRPC), te recomendamos que selecciones la transmisión predeterminada. La API de Storage Write (REST) sigue siendo totalmente compatible.

Antes de comenzar

  1. Asegúrate de tener acceso de escritura al conjunto de datos que contiene tu tabla de destino. La tabla debe existir antes de comenzar la escritura de datos, a menos que estés usando tablas de plantillas Para obtener más información sobre las tablas de plantillas, consulta Crear tablas automáticamente con tablas de plantillas.

  2. Verifica la política de cuota de transmisión de datos.

  3. Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .

  4. La transmisión no está disponible a través del nivel gratuito. Si intentas usar la transmisión sin habilitar la facturación, recibirás el error siguiente: BigQuery: Streaming insert is not allowed in the free tier.

  5. Otorga funciones de Identity and Access Management (IAM) que les brindan a los usuarios los permisos necesarios para realizar cada tarea de este documento.

Permisos necesarios

Para transmitir datos a BigQuery, necesitas los siguientes permisos de IAM:

  • bigquery.tables.updateData (te permite insertar datos en la tabla)
  • bigquery.tables.get (te permite obtener metadatos de tablas)
  • bigquery.datasets.get (te permite obtener metadatos de conjuntos de datos)
  • bigquery.tables.create (obligatorio si usas una tabla de plantillas para crear la tabla de forma automática)

Cada uno de los siguientes roles predefinidos de IAM incluye los permisos que necesitas para transmitir datos a BigQuery:

  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.admin

Para obtener más información sobre las funciones de IAM y los permisos en BigQuery, consulta Funciones y permisos predefinidos.

Transmite datos a BigQuery

C#

Antes de probar este ejemplo, sigue las instrucciones de configuración para C# 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 C#.

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.


using Google.Cloud.BigQuery.V2;

public class BigQueryTableInsertRows
{
    public void TableInsertRows(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_id",
        string tableId = "your_table_id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        BigQueryInsertRow[] rows = new BigQueryInsertRow[]
        {
            // The insert ID is optional, but can avoid duplicate data
            // when retrying inserts.
            new BigQueryInsertRow(insertId: "row1") {
                { "name", "Washington" },
                { "post_abbr", "WA" }
            },
            new BigQueryInsertRow(insertId: "row2") {
                { "name", "Colorado" },
                { "post_abbr", "CO" }
            }
        };
        client.InsertRows(datasetId, tableId,