Criar e consultar tabelas do BigLake Iceberg no BigQuery

Airflow gerenciado (Geração 3) | Airflow gerenciado (Geração 2) | Airflow gerenciado (Geração 1 legada)

Esta página explica como criar e modificar tabelas do BigLake Iceberg no BigQuery usando operadores do Airflow no ambiente do Airflow gerenciado.

Sobre as tabelas do BigLake Iceberg no BigQuery

As tabelas do BigLake Iceberg no BigQuery fornecem a base para a criação de lakehouses de formato aberto Google Cloud. As tabelas do BigLake Iceberg no BigQuery oferecem a mesma experiência totalmente gerenciada que as tabelas padrão do BigQuery, mas armazenam dados em buckets de armazenamento de propriedade do cliente. As tabelas do BigLake Iceberg no BigQuery oferecem suporte ao formato de tabela aberta do Iceberg para melhor interoperabilidade com mecanismos de computação de código aberto e de terceiros em uma única cópia de dados.

Antes de começar

Criar uma tabela do BigLake Iceberg no BigQuery

Para criar uma tabela do BigLake Iceberg no BigQuery, use BigQueryCreateTableOperator da mesma forma que para outras tabelas do BigQuery. No campo biglakeConfiguration, forneça a configuração da tabela.

import datetime

from airflow.models.dag import DAG
from airflow.providers.google.cloud.operators.bigquery import BigQueryCreateTableOperator

with DAG(
  "bq_iceberg_dag",
  start_date=datetime.datetime(2025, 1, 1),
  schedule=None,
  ) as dag:

  create_iceberg_table = BigQueryCreateTableOperator(
    task_id="create_iceberg_table",
    project_id="PROJECT_ID",
    dataset_id="DATASET_ID",
    table_id="TABLE_NAME",
    table_resource={
      "schema": {
        "fields": [
          {"name": "order_id", "type": "INTEGER", "mode": "REQUIRED"},
          {"name": "customer_id", "type": "INTEGER", "mode": "REQUIRED"},
          {"name": "amount", "type": "INTEGER", "mode": "REQUIRED"},
          {"name": "created_at", "type": "TIMESTAMP", "mode": "REQUIRED"},
        ]
      },
      "biglakeConfiguration": {
        "connectionId": "CONNECTION_NAME",
        "storageUri": "STORAGE_URI",
        "fileFormat": "PARQUET",
        "tableFormat": "ICEBERG",
      }
    }
  )

Substitua:

  • PROJECT_ID: o ID do projeto.
  • DATASET_ID: um conjunto de dados existente.
  • TABLE_NAME: o nome da tabela que você está criando;
  • CONNECTION_NAME: o nome da conexão a recursos do Cloud no formato projects/PROJECT_ID/locations/REGION/connections/CONNECTION_ID.
  • STORAGE_URI: um URI totalmente qualificado do Cloud Storage para a tabela. Por exemplo, gs://example-bucket/iceberg-table.

Consultar uma tabela do BigLake Iceberg no BigQuery

Depois de criar uma tabela do BigLake Iceberg, você pode consultá-la com BigQueryInsertJobOperator como de costume. O operador não precisa de configuração adicional especificamente para tabelas do BigLake Iceberg.

import datetime

from airflow.models.dag import DAG
from airflow.providers.google.cloud.operators.bigquery import BigQueryInsertJobOperator

with DAG(
  "bq_iceberg_dag_query",
  start_date=datetime.datetime(2025, 1, 1),
  schedule=None,
  ) as dag:

  insert_values = BigQueryInsertJobOperator(
    task_id="iceberg_insert_values",
    configuration={
      "query": {
        "query": f"""
          INSERT INTO `TABLE_ID` (order_id, customer_id, amount, created_at)
          VALUES
            (101, 19, 1, TIMESTAMP '2025-09-15 10:15:00+00'),
            (102, 35, 2, TIMESTAMP '2025-09-14 10:15:00+00'),
            (103, 36, 3, TIMESTAMP '2025-09-12 10:15:00+00'),
            (104, 37, 4, TIMESTAMP '2025-09-11 10:15:00+00')
        """,
        "useLegacySql": False,
        }
      }
  )

Substitua:

  • TABLE_ID pelo ID da tabela, no formato PROJECT_ID.DATASET_ID.TABLE_NAME.

A seguir