Questa pagina spiega come risolvere i problemi comuni durante l'integrazione di SAP Business Data Cloud (BDC) con BigQuery. Per il flusso di lavoro da SAP a Google Cloud (federazione), consulta la pagina di risoluzione dei problemi di Lakehouse.
Errori NOT_FOUND o PERMISSION_DENIED durante l'esecuzione di query sulle tabelle
Questo problema si verifica quando l'accesso viene revocato sul lato SAP BDC. Le query alle tabelle interessate non vanno a buon fine e restituiscono un errore "non trovato" o "autorizzazione negata" proveniente dall'endpoint Delta Sharing.
Per risolvere il problema, collabora con l'amministratore SAP per ripristinare l'accesso alle tabelle. Per saperne di più sulla gestione degli accessi in SAP, consulta Utilizzo dei prodotti di dati in SAP Business Data Cloud Connect nella documentazione di SAP.
Impossibile scrivere dati nelle tabelle SAP BDC
Questo problema si verifica quando tenti di scrivere o modificare i dati nelle tabelle SAP BDC da BigQuery. Questa integrazione fornisce l'accesso di sola lettura ai dati SAP BDC.
Per risolvere il problema, modifica i dati direttamente in SAP BDC.
Addebiti imprevisti per le chiamate API Delta Sharing
Questo problema può verificarsi se il catalogo Lakehouse si sincronizza troppo frequentemente con SAP BDC, che chiama le API Delta Sharing per elencare le tabelle e ottenere i metadati delle tabelle. Queste chiamate API vengono addebitate come operazioni Lakehouse di Classe A.
Per risolvere il problema, aumenta l'intervallo di aggiornamento del catalogo per ridurre la frequenza delle chiamate API. Per ulteriori informazioni sui prezzi, consulta Prezzi di Lakehouse.
SAP non riesce a trovare o eseguire query sulle tabelle pubblicate
Questo problema può verificarsi se i metadati Apache Iceberg richiesti da SAP BDC non sono stati generati correttamente nel bucket Cloud Storage.
Per risolvere il problema, verifica che i file dei metadati previsti esistano nel percorso di archiviazione che supporta la tabella:
Elenca i contenuti della cartella
metadataper la tua tabella:gcloud storage ls "gs://BUCKET_NAME/NAMESPACE_NAME/TABLE_NAME/metadata/"
Verifica che l'output contenga file di metadati Apache Iceberg standard, tra cui:
version-hint.txtv*.metadata.json- File manifest (
.avro). Se questi file non sono presenti, controlla la configurazione del catalogo Iceberg REST o le operazioni di scrittura in BigQuery per assicurarti che i dati e i metadati vengano materializzati correttamente nel bucket di archiviazione.
La pubblicazione della tabella non riesce con l'errore di chiave primaria mancante o campo nullable
Questo problema si verifica quando pubblichi un catalogo Apache Iceberg o un prodotto di dati su SAP BDC, ma le tabelle all'interno del catalogo o del prodotto di dati non hanno una chiave primaria definita nei metadati Iceberg o una delle colonne della chiave primaria è definita come nullable (required: false).
In questo caso, la pubblicazione non va a buon fine e viene visualizzato uno dei seguenti errori:
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 richiede che tutte le tabelle pubblicate definiscano i vincoli della chiave primaria utilizzando identifier-field-ids nei metadati Iceberg. In conformità con la specifica Apache Iceberg, tutte le colonne designate in identifier-field-ids devono essere configurate anche come non nullable (required: true).
Per risolvere il problema, esegui un aggiornamento atomico dello schema utilizzando l'API REST BigLake Iceberg per contrassegnare le colonne della chiave primaria come required: true e specificare i relativi ID campo in identifier-field-ids:
Ottieni un token di accesso per l'autorizzazione:
TOKEN=$(gcloud auth application-default print-access-token)
Invia un commit di aggiornamento dello schema REST Iceberg utilizzando 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()
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto Google Cloud .ICEBERG_CATALOG_ID: l'ID del catalogo REST Iceberg.NAMESPACE_NAME: il nome dello spazio dei nomi Iceberg.TABLE_NAME: il nome della tabella Iceberg.PRIMARY_KEY_COLUMN_NAME: il nome della colonna da impostare come chiave primaria.PRIMARY_KEY_FIELD_ID: l'ID campo intero della colonna della chiave primaria (ad esempio,1).
Le query su SAP non vanno a buon fine con errori di autorizzazione o di mancato rilevamento
Questo problema può verificarsi se l'accesso viene revocato o le autorizzazioni vengono modificate in BigQuery dopo la pubblicazione di un catalogo o di un prodotto di dati in SAP BDC. Le query alle tabelle interessate non andranno a buon fine sul lato SAP, in genere con un errore "non trovato" o "autorizzazione negata" proveniente da BigQuery.
Per risolvere il problema, verifica che l'entità di federazione delle identità per i workload mantenga i ruoli richiesti (come BigLake Viewer) e che sia concesso l'accesso standard al set di dati o alla tabella BigQuery. Per saperne di più sull'installazione e sull'utilizzo dei prodotti di dati in SAP, consulta Installazione dei prodotti di dati nella documentazione di SAP.
Le nuove tabelle o le modifiche ai metadati non vengono visualizzate in SAP BDC
Questo problema può verificarsi quando aggiungi nuove tabelle o aggiorni i metadati delle tabelle esistenti nell'endpoint del catalogo REST Apache Iceberg o nel prodotto di dati Knowledge Catalog, ma le modifiche non sono visibili ai consumer SAP. Anche se i dati sottostanti rimangono aggiornati, gli aggiornamenti dei metadati potrebbero richiedere un'azione esplicita.
Per risolvere il problema, esegui una nuova azione di pubblicazione (gcloud biglake
data-product-sharing publish) per il catalogo o il prodotto di dati per rendere i nuovi metadati rilevabili in SAP BDC.
Impossibile scrivere dati da SAP a BigQuery
Questo problema si verifica quando tenti di utilizzare l'integrazione SAP pubblicata per scrivere o modificare i dati in BigQuery da SAP BDC. Questa integrazione fornisce l'accesso di sola lettura ai dati BigQuery da SAP BDC per evitare la sovrascrittura accidentale dei dati o violazioni della sicurezza.
Per risolvere il problema, manipola e scrivi i dati di origine direttamente utilizzando BigQuery o pipeline Google Cloud standard.
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER errori durante l'esecuzione di query sulle tabelle
Questo problema può verificarsi se nel tuo ambiente sono applicati i Controlli di servizio VPC e il perimetro applicato al progetto limita il servizio storage.googleapis.com.
Poiché Dremel deve leggere i bucket Cloud Storage in entrata nel progetto SAP durante l'esecuzione di query sulle tabelle, la richiesta è vietata perché il progetto SAP si trova al di fuori del perimetro.
Per risolvere il problema, configura una regola in uscita dei Controlli di servizio VPC. Per saperne di più sulla configurazione, consulta Configurazione dei Controlli di servizio VPC per SAP BDC.