En esta página, se explica cómo resolver problemas habituales cuando integras SAP Business Data Cloud (BDC) con BigQuery. Para el flujo de trabajo de SAP a Google Cloud (federación), consulta la página de solución de problemas de Lakehouse.
Errores NOT_FOUND o PERMISSION_DENIED cuando se consultan tablas
Este problema se produce cuando se revoca el acceso en el lado de SAP BDC. Las consultas a las tablas afectadas fallan y devuelven un error de "no encontrado" o "permiso denegado" que se origina en el extremo de Delta Sharing.
Para resolver este problema, trabaja con tu administrador de SAP para restablecer el acceso a las tablas. Para obtener más información sobre la administración de accesos en SAP, consulta Trabaja con productos de datos en SAP Business Data Cloud Connect en la documentación de SAP.
No se pueden escribir datos en las tablas de SAP BDC
Este problema se produce cuando intentas escribir o modificar datos en tus tablas de SAP BDC desde BigQuery. Esta integración proporciona acceso de solo lectura a los datos de SAP BDC.
Para resolver este problema, modifica los datos directamente en SAP BDC.
Cargos inesperados por llamadas a la API de Delta Sharing
Este problema puede ocurrir si tu catálogo de Lakehouse se sincroniza con demasiada frecuencia con SAP BDC, que llama a las APIs de Delta Sharing para enumerar tablas y obtener metadatos de tablas. Esas llamadas a la API se cobran como operaciones de Lakehouse de clase A.
Para resolver este problema, aumenta el intervalo de actualización del catálogo para reducir la frecuencia de las llamadas a la API. Para obtener más información sobre los precios, consulta Precios de Lakehouse.
SAP no puede encontrar ni consultar tablas publicadas
Este problema puede ocurrir si los metadatos de Apache Iceberg que requiere SAP BDC no se generaron correctamente en tu bucket de Cloud Storage.
Para resolver este problema, verifica que los archivos de metadatos esperados existan en la ruta de almacenamiento que respalda tu tabla:
Enumera el contenido de la carpeta
metadatade tu tabla:gcloud storage ls "gs://BUCKET_NAME/NAMESPACE_NAME/TABLE_NAME/metadata/"
Verifica que el resultado contenga archivos de metadatos estándar de Apache Iceberg, incluidos los siguientes:
version-hint.txtv*.metadata.json- Archivos de manifiesto (
.avro). Si faltan estos archivos, verifica la configuración del catálogo de Iceberg REST o las operaciones de escritura en BigQuery para asegurarte de que los datos y los metadatos se materialicen correctamente en el bucket de almacenamiento.
La publicación de la tabla falla con un error de clave primaria faltante o campo anulable
Este problema se produce cuando publicas un catálogo de Apache Iceberg o un producto de datos en
SAP BDC, pero las tablas dentro del catálogo o el producto de datos no tienen una clave primaria definida en sus metadatos de Iceberg
o una de las columnas de clave primaria se define como anulable
(required: false).
Cuando esto sucede, la publicación falla con uno de los siguientes errores:
INVALID_ARGUMENT: Failed to generate Core Schema Notation (CSN) payload: Table 'TABLE_NAME' must have a primary key constraint to be published to SAP.INVALID_ARGUMENT: Field COLUMN_NAME is not required, but is referenced in the identifier-field-ids property.
SAP BDC requiere que todas las tablas publicadas definan restricciones de clave primaria con
identifier-field-ids en los metadatos de Iceberg. De acuerdo con la especificación de Apache
Iceberg, todas las columnas designadas en identifier-field-ids también deben
configurarse como no anulables (required: true).
Para resolver este problema, realiza una actualización de esquema atómica con la API de REST de BigLake Iceberg para marcar las columnas de clave primaria como required: true y especificar sus IDs de campo en identifier-field-ids:
Obtén un token de acceso para la autorización:
TOKEN=$(gcloud auth application-default print-access-token)
Envía una confirmación de actualización del esquema de Iceberg REST con Python:
import requests headers = { "Authorization": f"Bearer {TOKEN}", "x-goog-user-project": "PROJECT_ID", "X-Iceberg-Access-Delegation": "vended-credentials", "Content-Type": "application/json", } url = "https://biglake.googleapis.com/iceberg/v1/restcatalog/v1/projects/PROJECT_ID/catalogs/ICEBERG_CATALOG_ID/namespaces/NAMESPACE_NAME/tables/TABLE_NAME" # 1. Fetch current metadata meta = requests.get(url, headers=headers).json()["metadata"] schema = meta["schemas"][0].copy() schema["fields"] = [f.copy() for f in schema["fields"]] # 2. Mark primary key column as required (non-nullable) and set identifier-field-ids for f in schema["fields"]: if f["name"] == "PRIMARY_KEY_COLUMN_NAME": f["required"] = True schema["identifier-field-ids"] = [PRIMARY_KEY_FIELD_ID] schema["schema-id"] = meta.get("last-schema-id", 0) + 1 # 3. Commit the updated schema update_payload = { "requirements": [{"type": "assert-table-uuid", "uuid": meta["table-uuid"]}], "updates": [ { "action": "add-schema", "schema": schema, "last-column-id": meta.get("last-column-id", 0), }, {"action": "set-current-schema", "schema-id": -1}, ], } response = requests.post(url, headers=headers, json=update_payload) response.raise_for_status()
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto de Google Cloud .ICEBERG_CATALOG_ID: Es el ID del catálogo de REST de Iceberg.NAMESPACE_NAME: Es el nombre de tu espacio de nombres de Iceberg.TABLE_NAME: el nombre de tu tabla de Iceberg.PRIMARY_KEY_COLUMN_NAME: Es el nombre de la columna que se establecerá como clave primaria.PRIMARY_KEY_FIELD_ID: Es el ID de campo de número entero de la columna de clave primaria (por ejemplo,1).
Las consultas en SAP fallan con errores de permiso o de no encontrado
Este problema puede ocurrir si se revoca el acceso o se modifican los permisos en BigQuery después de que se publica un catálogo o un producto de datos en SAP BDC. Las consultas a las tablas afectadas fallarán en el lado de SAP, por lo general, con un error de "no encontrado" o "permiso denegado" que se origina en BigQuery.
Para resolver este problema, verifica que la principal de la federación de identidades para cargas de trabajo conserve los roles necesarios (como Lector de BigLake) y que se otorgue acceso estándar al conjunto de datos o a la tabla de BigQuery. Para obtener más información sobre cómo instalar y consumir productos de datos en SAP, consulta Instala productos de datos en la documentación de SAP.
Las tablas nuevas o los cambios en los metadatos no aparecen en SAP BDC
Este problema puede ocurrir cuando agregas tablas nuevas o actualizas los metadatos de tablas existentes en el extremo del catálogo de REST de Apache Iceberg o en el producto de datos de Knowledge Catalog, pero los cambios no son visibles para los consumidores de SAP. Si bien los datos subyacentes permanecen actualizados, las actualizaciones de metadatos pueden requerir una acción explícita.
Para resolver este problema, ejecuta una nueva acción de publicación (gcloud biglake
data-product-sharing publish) para el catálogo o el producto de datos para que los metadatos nuevos
se puedan descubrir en SAP BDC.
No se pueden escribir datos de SAP en BigQuery
Este problema se produce cuando intentas usar la integración de SAP publicada para escribir o modificar datos en BigQuery desde SAP BDC. Esta integración proporciona acceso de solo lectura a los datos de BigQuery desde SAP BDC para evitar el reemplazo accidental de datos o las infracciones de seguridad.
Para resolver este problema, manipula y escribe tus datos de origen directamente con BigQuery o canalizaciones estándar de Google Cloud .
Errores RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER cuando se consultan tablas
Este problema puede ocurrir si tu entorno tiene aplicados los Controles del servicio de VPC y
el perímetro aplicado en el proyecto restringe el servicio de storage.googleapis.com.
Debido a que Dremel necesita leer los buckets de Cloud Storage entrantes en el proyecto de SAP
cuando consulta tablas, la solicitud se prohíbe, ya que el proyecto de SAP
está fuera de tu perímetro.
Para resolver este problema, configura una regla de salida de los Controles del servicio de VPC. Para obtener más información sobre la configuración, consulta Configuración de los Controles del servicio de VPC para SAP BDC.