Auf dieser Seite wird beschrieben, wie Sie häufige Probleme bei der Integration von SAP Business Data Cloud (BDC) in BigQuery beheben. Informationen zum Workflow von SAP zu Google Cloud (Verbund) finden Sie auf der Seite zur Fehlerbehebung für Lakehouse.
NOT_FOUND- oder PERMISSION_DENIED-Fehler beim Abfragen von Tabellen
Dieses Problem tritt auf, wenn der Zugriff auf der SAP BDC-Seite widerrufen wird. Abfragen für die betroffenen Tabellen schlagen fehl und geben einen Fehler vom Typ „nicht gefunden“ oder „Berechtigung verweigert“ zurück, der vom Delta Sharing-Endpunkt stammt.
Wenden Sie sich an Ihren SAP-Administrator, um den Zugriff auf die Tabellen wiederherzustellen. Weitere Informationen zur Zugriffsverwaltung in SAP finden Sie in der SAP-Dokumentation unter Working with Data Products in SAP Business Data Cloud Connect.
Daten können nicht in SAP BDC-Tabellen geschrieben werden
Dieses Problem tritt auf, wenn Sie versuchen, Daten in Ihren SAP BDC-Tabellen aus BigQuery zu schreiben oder zu ändern. Diese Integration bietet schreibgeschützten Zugriff auf SAP BDC-Daten.
Ändern Sie die Daten direkt in SAP BDC, um dieses Problem zu beheben.
Unerwartete Kosten für Delta Sharing API-Aufrufe
Dieses Problem kann auftreten, wenn Ihr Lakehouse-Katalog zu häufig mit SAP BDC synchronisiert wird. Dabei werden Delta Sharing APIs aufgerufen, um Tabellen aufzulisten und Tabellenmetadaten abzurufen. Diese API-Aufrufe werden als Lakehouse-Vorgänge der Klasse A abgerechnet.
Erhöhen Sie das Aktualisierungsintervall des Katalogs, um die Häufigkeit der API-Aufrufe zu verringern. Weitere Informationen zu Preisen finden Sie unter Lakehouse-Preise.
SAP kann veröffentlichte Tabellen nicht finden oder abfragen
Dieses Problem kann auftreten, wenn die von SAP BDC benötigten Apache Iceberg-Metadaten in Ihrem Cloud Storage-Bucket nicht korrekt generiert wurden.
Prüfen Sie, ob die erwarteten Metadatendateien unter dem Speicherpfad vorhanden sind, der Ihre Tabelle unterstützt:
Listen Sie den Inhalt des Ordners
metadatafür Ihre Tabelle auf:gcloud storage ls "gs://BUCKET_NAME/NAMESPACE_NAME/TABLE_NAME/metadata/"
Prüfen Sie, ob die Ausgabe Standard-Apache Iceberg-Metadatendateien enthält, darunter:
version-hint.txtv*.metadata.json- Manifestdateien (
.avro). Wenn diese Dateien fehlen, prüfen Sie die Konfiguration des Iceberg-REST-Katalogs oder die Schreibvorgänge in BigQuery, um sicherzustellen, dass Daten und Metadaten erfolgreich in den Speicher-Bucket materialisiert werden.
Die Veröffentlichung von Tabellen schlägt mit einem Fehler wegen fehlendem Primärschlüssel oder Nullable-Feld fehl
Dieses Problem tritt auf, wenn Sie einen Apache Iceberg-Katalog oder ein Datenprodukt in SAP BDC veröffentlichen, aber für die Tabellen im Katalog oder Datenprodukt in den Iceberg-Metadaten kein Primärschlüssel definiert ist oder eine der Primärschlüsselspalten als nullable (required: false) definiert ist.
In diesem Fall schlägt die Veröffentlichung mit einem der folgenden Fehler fehl:
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.
Für alle veröffentlichten Tabellen in SAP BDC müssen Primärschlüsselbeschränkungen mit identifier-field-ids in den Iceberg-Metadaten definiert werden. Gemäß der Apache Iceberg-Spezifikation müssen alle in identifier-field-ids angegebenen Spalten auch als nicht nullable (required: true) konfiguriert werden.
Führen Sie eine atomare Schemaaktualisierung mit der BigLake Iceberg REST API durch, um die Primärschlüsselspalten als required: true zu kennzeichnen und ihre Feld-IDs in identifier-field-ids anzugeben:
Rufen Sie ein Zugriffstoken für die Autorisierung ab:
TOKEN=$(gcloud auth application-default print-access-token)
Senden Sie mit Python einen Iceberg REST-Schemaaktualisierungs-Commit:
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()
Ersetzen Sie Folgendes:
PROJECT_ID: Ihre Google Cloud Projekt-ID.ICEBERG_CATALOG_ID: Ihre Iceberg REST-Katalog-ID.NAMESPACE_NAME: Ihr Iceberg-Namespace-Name.TABLE_NAME: Ihr Iceberg-Tabellenname.PRIMARY_KEY_COLUMN_NAME: Der Name der Spalte, die als Primärschlüssel festgelegt werden soll.PRIMARY_KEY_FIELD_ID: Die Ganzzahl-Feld-ID der Primärschlüsselspalte (z. B.1).
Abfragen in SAP schlagen mit Berechtigungs- oder „nicht gefunden“-Fehlern fehl
Dieses Problem kann auftreten, wenn der Zugriff widerrufen oder Berechtigungen in BigQuery geändert werden, nachdem ein Katalog oder Datenprodukt in SAP BDC veröffentlicht wurde. Abfragen für die betroffenen Tabellen schlagen auf der SAP-Seite fehl, in der Regel mit einem Fehler vom Typ „nicht gefunden“ oder „Berechtigung verweigert“, der von BigQuery stammt.
Prüfen Sie, ob das Workload Identity Federation-Hauptkonto die erforderlichen Rollen (z. B. BigLake-Betrachter) behält und ob der Standardzugriff auf BigQuery-Datasets oder -Tabellen gewährt wird. Weitere Informationen zum Installieren und Verwenden von Datenprodukten in SAP finden Sie in der SAP-Dokumentation unter Installing Data Products.
Neue Tabellen oder Metadatenänderungen werden in SAP BDC nicht angezeigt
Dieses Problem kann auftreten, wenn Sie neue Tabellen hinzufügen oder vorhandene Tabellenmetadaten in Ihrem Apache Iceberg REST-Katalog oder Knowledge Catalog-Datenprodukt aktualisieren, die Änderungen aber für SAP-Nutzer nicht sichtbar sind. Die zugrunde liegenden Daten sind zwar aktuell, für Metadatenaktualisierungen sind aber möglicherweise explizite Maßnahmen erforderlich.
Führen Sie eine neue Veröffentlichungsaktion (gcloud biglake
data-product-sharing publish) für den Katalog oder das Datenprodukt aus, damit die neuen
Metadaten in SAP BDC auffindbar sind.
Daten können nicht von SAP zurück nach BigQuery geschrieben werden
Dieses Problem tritt auf, wenn Sie versuchen, mit der veröffentlichten SAP-Integration Daten in BigQuery aus SAP BDC zu schreiben oder zu ändern. Diese Integration bietet schreibgeschützten Zugriff auf BigQuery-Daten aus SAP BDC, um ein versehentliches Überschreiben von Daten oder Sicherheitsverstöße zu verhindern.
Bearbeiten und schreiben Sie Ihre Quelldaten direkt mit BigQuery oder Standard Google Cloud pipelines, um dieses Problem zu beheben.
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER-Fehler beim Abfragen von Tabellen
Dieses Problem kann auftreten, wenn in Ihrer Umgebung VPC Service Controls erzwungen werden und der auf das Projekt angewendete Perimeter den Dienst storage.googleapis.com einschränkt.
Da Dremel die eingehenden Cloud Storage-Buckets im SAP-Projekt lesen muss, wenn Tabellen abgefragt werden, wird die Anfrage verboten, da sich das SAP-Projekt außerhalb Ihres Perimeters befindet.
Konfigurieren Sie eine VPC Service Controls-Regel für ausgehenden Traffic, um dieses Problem zu beheben. Weitere Informationen zur Konfiguration finden Sie unter VPC Service Controls für SAP BDC konfigurieren.