Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Nesta página, explicamos como criar e modificar tabelas Iceberg do BigLake no BigQuery usando operadores do Airflow no ambiente do Cloud Composer.
Sobre as tabelas do BigLake Iceberg no BigQuery
As tabelas do BigLake Iceberg no BigQuery são a base para criar lakehouses de formato aberto no Google Cloud. As tabelas Iceberg do BigLake no BigQuery oferecem a mesma experiência totalmente gerenciada das 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 melhorar a interoperabilidade com mecanismos de computação de código aberto e de terceiros em uma única cópia de dados.
Antes de começar
Confira as limitações das tabelas do BigLake Iceberg no BigQuery. As mesmas limitações se aplicam ao trabalhar com tabelas do BigLake Iceberg usando operadores do Airflow.
Crie uma conexão de recursos do Cloud para o bucket do Cloud Storage em que a tabela do BigLake Iceberg vai ficar.
Verifique se as permissões do IAM estão atribuídas da seguinte maneira:
A conta de serviço do seu ambiente precisa ter papéis do IAM para trabalhar com tabelas do BigLake Iceberg no BigQuery. Siga as instruções descritas em Tabelas do BigLake para Apache Iceberg no BigQuery.
A conta de serviço associada à conexão de recursos do Cloud precisa ter papéis do IAM para ler e gravar dados no Cloud Storage. Siga as instruções descritas em Tabelas do BigLake para Apache Iceberg no BigQuery.
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 de recursos da nuvem no formatoprojects/PROJECT_ID/locations/REGION/connections/CONNECTION_ID.STORAGE_URI: um URI do Cloud Storage totalmente qualificado 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 específica para tabelas Iceberg do BigLake.
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_IDcom o ID da tabela no formatoPROJECT_ID.DATASET_ID.TABLE_NAME.