Plantilla de archivos CSV de Cloud Storage a BigQuery

El flujo de procesamiento de archivos CSV de Cloud Storage a BigQuery es un flujo de procesamiento por lotes que te permite leer datos de archivos CSV almacenados en Cloud Storage y añadir el resultado a una tabla de BigQuery. Los archivos CSV pueden estar comprimidos o sin comprimir en los formatos que se indican en la página Enum SDK.Compression

Requisitos del flujo de procesamiento

Para usar esta plantilla, tu canalización debe cumplir los siguientes requisitos.

Archivo JSON de esquema de BigQuery

Crea un archivo JSON que describa tu esquema de BigQuery. Asegúrate de que el esquema tenga una matriz JSON de nivel superior que se llame BigQuery Schema y que su contenido siga el patrón {"name": "COLUMN_NAME", "type": "DATA_TYPE"}.

La plantilla de lote de archivos CSV de Cloud Storage a BigQuery no admite la importación de datos en campos STRUCT (Registro) de la tabla de BigQuery de destino.

El siguiente JSON describe un ejemplo de esquema de BigQuery:

{
  "BigQuery Schema": [
    {
      "name": "location",
      "type": "STRING"
    },
    {
      "name": "name",
      "type": "STRING"
    },
    {
      "name": "age",
      "type": "STRING"
    },
    {
      "name": "color",
      "type": "STRING"
    },
    {
      "name": "coffee",
      "type": "STRING"
    }
  ]
}

Error de esquema de tabla

La tabla de BigQuery que almacena los registros rechazados de los archivos CSV debe coincidir con el esquema de tabla definido aquí.

{
  "BigQuery Schema": [
    {
      "name": "RawContent",
      "type": "STRING"
    },
    {
      "name": "ErrorMsg",
      "type": "STRING"
    }
  ]
}

Parámetros de plantilla

Parámetros obligatorios

  • inputFilePattern ruta de Cloud Storage al archivo CSV que contiene el texto que se va a procesar. Por ejemplo, gs://your-bucket/path/*.csv.
  • schemaJSONPath la ruta de Cloud Storage al archivo JSON que define tu esquema de BigQuery.
  • outputTable el nombre de la tabla de BigQuery que almacena los datos procesados. Si reutilizas una tabla de BigQuery, los datos se añadirán a la tabla de destino.
  • bigQueryLoadingTemporaryDirectory directorio temporal que se usará durante el proceso de carga de BigQuery. Por ejemplo, gs://your-bucket/your-files/temp_dir.
  • badRecordsOutputTable nombre de la tabla de BigQuery que se usará para almacenar los datos rechazados al procesar los archivos CSV. Si reutilizas una tabla de BigQuery, los datos se añadirán a la tabla de destino. El esquema de esta tabla debe coincidir con el esquema de la tabla de errores (https://cloud.google.com/dataflow/docs/guides/templates/provided/cloud-storage-csv-to-bigquery#GcsCSVToBigQueryBadRecordsSchema).
  • Delimitador: el delimitador de columnas que usa el archivo CSV. Por ejemplo, ,.
  • csvFormat el formato CSV según el formato CSV de Apache Commons. El valor predeterminado es Default.

Parámetros opcionales

  • containsHeaders indica si el archivo CSV incluye encabezados. El valor predeterminado es false.
  • csvFileEncoding formato de codificación de caracteres del archivo CSV. Los valores permitidos son US-ASCII, ISO-8859-1, UTF-8 y UTF-16. El valor predeterminado es UTF-8.

Ejecutar la plantilla

Consola

  1. Ve a la página Crear tarea a partir de plantilla de Dataflow.
  2. Ir a Crear tarea a partir de plantilla
  3. En el campo Nombre de la tarea, introduce un nombre único.
  4. Opcional: En Endpoint regional, seleccione un valor en el menú desplegable. La región predeterminada es us-central1.

    Para ver una lista de las regiones en las que puedes ejecutar una tarea de Dataflow, consulta Ubicaciones de Dataflow.

  5. En el menú desplegable Plantilla de flujo de datos, seleccione the CSV files on Cloud Storage to BigQuery (Batch) template.
  6. En los campos de parámetros proporcionados, introduzca los valores de los parámetros.
  7. Haz clic en Ejecutar trabajo.

gcloud

En tu shell o terminal, ejecuta la plantilla:

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/GCS_CSV_to_BigQuery \
    --region REGION_NAME \
    --parameters \
inputFilePattern=PATH_TO_CSV_DATA,\
schemaJSONPath=PATH_TO_BIGQUERY_SCHEMA_JSON,\
outputTable=BIGQUERY_DESTINATION_TABLE,\
badRecordsOutputTable=BIGQUERY_BAD_RECORDS_TABLE,\
csvFormat=CSV_FORMAT,\
delimiter=DELIMITER,\
bigQueryLoadingTemporaryDirectory=PATH_TO_TEMP_DIR_ON_GCS,\
containsHeaders=CONTAINS_HEADERS,\
csvFileEncoding=CSV_FILE_ENCODING

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto Google Cloud en el que quieres ejecutar la tarea de Dataflow
  • JOB_NAME: un nombre de trabajo único que elijas
  • VERSION: la versión de la plantilla que quieres usar

    Puedes usar los siguientes valores:

    • latest para usar la última versión de la plantilla, que está disponible en la carpeta principal sin fecha del contenedor: gs://dataflow-templates-REGION_NAME/latest/
    • el nombre de la versión, como 2023-09-12-00_RC00, para usar una versión específica de la plantilla, que se encuentra anidada en la carpeta principal correspondiente con la fecha en el bucket: gs://dataflow-templates-REGION_NAME/
  • REGION_NAME: la región en la que quieras desplegar tu trabajo de Dataflow. Por ejemplo, us-central1
  • PATH_TO_CSV_DATA: la ruta de Cloud Storage a tus archivos CSV
  • PATH_TO_BIGQUERY_SCHEMA_JSON: la ruta de Cloud Storage al archivo JSON que contiene la definición del esquema.
  • BIGQUERY_DESTINATION_TABLE: nombre de la tabla de destino de BigQuery
  • BIGQUERY_BAD_RECORDS_TABLE: nombre de la tabla de registros incorrectos de BigQuery
  • PATH_TO_TEMP_DIR_ON_GCS: la ruta de Cloud Storage al directorio temporal
  • DELIMITER: delimitador de archivos CSV
  • CSV_FORMAT: especificación del formato CSV para analizar registros
  • CONTAINS_HEADERS: indica si los archivos CSV contienen encabezados
  • CSV_FILE_ENCODING: codificación de los archivos CSV

API

Para ejecutar la plantilla mediante la API REST, envía una solicitud HTTP POST. Para obtener más información sobre la API y sus ámbitos de autorización, consulta projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/GCS_CSV_to_BigQuery
{
   "jobName": "JOB_NAME",
   "parameters": {
       "inputFilePattern":"PATH_TO_CSV_DATA",
       "schemaJSONPath": "PATH_TO_BIGQUERY_SCHEMA_JSON",
       "outputTable":"BIGQUERY_DESTINATION_TABLE",
       "badRecordsOutputTable":"BIGQUERY_BAD_RECORDS_TABLE",
       "csvFormat":"CSV_FORMAT",
       "delimiter":"DELIMITER",
       "bigQueryLoadingTemporaryDirectory": "PATH_TO_TEMP_DIR_ON_GCS",
       "containsHeaders": "CONTAINS_HEADERS",
       "csvFileEncoding": "CSV_FILE_ENCODING"
   },
   "environment": { "zone": "us-central1-f" }
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto Google Cloud en el que quieres ejecutar la tarea de Dataflow
  • JOB_NAME: un nombre de trabajo único que elijas
  • VERSION: la versión de la plantilla que quieres usar

    Puedes usar los siguientes valores:

    • latest para usar la última versión de la plantilla, que está disponible en la carpeta principal sin fecha del contenedor: gs://dataflow-templates-REGION_NAME/latest/
    • el nombre de la versión, como 2023-09-12-00_RC00, para usar una versión específica de la plantilla, que se encuentra anidada en la carpeta principal correspondiente con la fecha en el bucket: gs://dataflow-templates-REGION_NAME/
  • LOCATION: la región en la que quieras desplegar tu trabajo de Dataflow. Por ejemplo, us-central1
  • PATH_TO_CSV_DATA: la ruta de Cloud Storage a tus archivos CSV
  • PATH_TO_BIGQUERY_SCHEMA_JSON: la ruta de Cloud Storage al archivo JSON que contiene la definición del esquema.
  • BIGQUERY_DESTINATION_TABLE: nombre de la tabla de destino de BigQuery
  • BIGQUERY_BAD_RECORDS_TABLE: nombre de la tabla de registros incorrectos de BigQuery
  • PATH_TO_TEMP_DIR_ON_GCS: la ruta de Cloud Storage al directorio temporal
  • DELIMITER: delimitador de archivos CSV
  • CSV_FORMAT: especificación del formato CSV para analizar registros
  • CONTAINS_HEADERS: indica si los archivos CSV contienen encabezados
  • CSV_FILE_ENCODING: codificación de los archivos CSV

Siguientes pasos