Fehlerbehebung beim Zugriff auf SAP BDC

Auf dieser Seite wird beschrieben, wie Sie häufige Probleme bei der Einbindung von SAP Business Data Cloud (BDC) in BigQuery beheben. Informationen zum Workflow „SAP zu Google Cloud (Föderation)“ 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 an die betroffenen Tabellen schlagen fehl und geben einen Fehler des Typs „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 Mit Datenprodukten in SAP Business Data Cloud Connect arbeiten.

Daten können nicht in SAP BDC-Tabellen geschrieben werden

Dieses Problem tritt auf, wenn Sie versuchen, Daten in Ihren SAP BDC-Tabellen über BigQuery zu schreiben oder zu ändern. Diese Integration bietet Lesezugriff 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, das Delta Sharing APIs aufruft, um Tabellen aufzulisten und Tabellenmetadaten abzurufen. Diese API-Aufrufe werden als Lakehouse-Vorgänge der Klasse A abgerechnet.

Erhöhen Sie zur Behebung dieses Problems das Aktualisierungsintervall des Katalogs, um die Häufigkeit von API-Aufrufen zu reduzieren. Weitere Informationen zu den 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 nicht korrekt in Ihrem Cloud Storage-Bucket generiert wurden.

Prüfen Sie zur Behebung dieses Problems, ob die erwarteten Metadatendateien im Speicherpfad vorhanden sind, der Ihre Tabelle unterstützt:

  1. Listen Sie den Inhalt des Ordners metadata für Ihre Tabelle auf:

    gcloud storage ls "gs://BUCKET_NAME/NAMESPACE_NAME/TABLE_NAME/metadata/"
  2. Prüfen Sie, ob die Ausgabe standardmäßige Apache Iceberg-Metadatendateien enthält, darunter:

    • version-hint.txt
    • v*.metadata.json
    • Manifestdateien (.avro). Wenn diese Dateien fehlen, prüfen Sie die Konfiguration Ihres Iceberg REST-Katalogs oder die Schreibvorgänge in BigQuery, um sicherzustellen, dass Daten und Metadaten erfolgreich im Storage-Bucket materialisiert werden.

Tabellenveröffentlichung schlägt mit Fehler „Fehlender Primärschlüssel“ oder „Feld, das Nullwerte zulässt“ 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 kein Primärschlüssel in den Iceberg-Metadaten definiert ist oder eine der Primärschlüsselspalten als nullfähig (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.

SAP BDC erfordert, dass für alle veröffentlichten Tabellen Primärschlüsseleinschrä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 sein.

Um dieses Problem zu beheben, führen Sie ein atomares Schema-Update 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:

  1. Rufen Sie ein Zugriffstoken für die Autorisierung ab:

    TOKEN=$(gcloud auth application-default print-access-token)
  2. Senden Sie einen Iceberg REST-Schema-Update-Commit mit 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()

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Projekt-ID in Google Cloud .
    • ICEBERG_CATALOG_ID: Ihre Iceberg-REST-Katalog-ID.
    • NAMESPACE_NAME: der Name Ihres Iceberg-Namespace.
    • TABLE_NAME: der Name Ihrer Iceberg-Tabelle.
    • 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 die Berechtigungen in BigQuery geändert werden, nachdem ein Katalog oder Datenprodukt in SAP BDC veröffentlicht wurde. Abfragen an die betroffenen Tabellen schlagen auf der SAP-Seite fehl, in der Regel mit einem Fehler „Nicht gefunden“ oder „Berechtigung verweigert“, der von BigQuery stammt.

Prüfen Sie, ob der Workload Identity Federation-Hauptkonten die erforderlichen Rollen (z. B. BigLake-Betrachter) hat und ob der Standardzugriff auf BigQuery-Datasets oder -Tabellen gewährt ist. Weitere Informationen zum Installieren und Verwenden von Datenprodukten in SAP finden Sie in der SAP-Dokumentation unter Datenprodukte installieren.

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-Katalogendpunkt oder Knowledge Catalog-Datenprodukt aktualisieren, die Änderungen jedoch für SAP-Nutzer nicht sichtbar sind. Die zugrunde liegenden Daten bleiben zwar aktuell, für Metadatenaktualisierungen sind jedoch möglicherweise explizite Aktionen erforderlich.

Führen Sie eine neue Veröffentlichungsaktion (gcloud biglake data-product-sharing publish) für den Katalog oder das Datenprodukt aus, um die neuen Metadaten in SAP BDC sichtbar zu machen.

Daten können nicht von SAP zurück in BigQuery geschrieben werden.

Dieses Problem tritt auf, wenn Sie versuchen, die veröffentlichte SAP-Integration zu verwenden, um Daten in BigQuery aus SAP BDC zu schreiben oder zu ändern. Diese Integration bietet Lesezugriff auf BigQuery-Daten von SAP BDC, um ein versehentliches Überschreiben von Daten oder Sicherheitsverletzungen zu verhindern.

Um dieses Problem zu beheben, bearbeiten und schreiben Sie Ihre Quelldaten direkt mit BigQuery oder Standard- Google Cloud -Pipelines.

RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER-Fehler beim Abfragen von Tabellen

Dieses Problem kann auftreten, wenn in Ihrer Umgebung VPC Service Controls erzwungen wird und der auf das Projekt angewendete Perimeter den Dienst storage.googleapis.com einschränkt. Da Dremel beim Abfragen von Tabellen die eingehenden Cloud Storage-Buckets im SAP-Projekt lesen muss, wird die Anfrage abgelehnt, 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-Konfiguration für SAP BDC.