Abfragen für Unternehmen in BigQuery speichern und verwalten

Mit dem BigQuery AI and ML SDK for ABAP können Sie BigQuery als zentrales Abfrage-Repository verwenden, um Abfragen zu speichern, zu verwalten und abzurufen, die Sie in Ihren ABAP-Anwendungen ausführen können.

Ein zentrales Abfrage-Repository bietet eine einzige Quelle der Wahrheit für validierte und optimierte Abfragen. BigQuery wird als zentrales Abfrage-Repository von verschiedenen Modulen des BigQuery AI and ML SDK for ABAP verwendet, um die gespeicherten Abfragen abzurufen und auszuführen.

Weitere Informationen zu gespeicherten Abfragen in BigQuery finden Sie unter Einführung in gespeicherte Abfragen.

Hinweise

Bevor Sie BigQuery als zentrales Abfrage-Repository verwenden, müssen Sie oder Ihre Administratoren die folgenden Voraussetzungen erfüllen:

Enterprise-Abfragen in BigQuery erstellen

Verwenden Sie BigQuery Studio, um Abfragen in BigQuery zu entwerfen, zu validieren und zu speichern. Informationen zum Erstellen von Abfragen in BigQuery Studio finden Sie unter Gespeicherte Abfragen erstellen. Die Abfragen werden in Ihrem Google Cloud Projekt mit einem Abfragenamen und einem Standort gespeichert.

Sie können die Abfragen auch für andere Nutzer freigeben. Weitere Informationen zum Freigeben einer gespeicherten Abfrage für einen Nutzer finden Sie unter Gespeicherte Abfragen freigeben.

Abfragebeispiele

Die folgenden Abfragebeispiele veranschaulichen, wie Sie Ihre Abfragen strukturieren können.

Abfrage zum Aufrufen von Gemini-Modellen

SELECT *
  FROM ML.GENERATE_TEXT(MODEL `PROJECT_ID_DATASET_GEMINI_MODEL`,
    (SELECT `UNIQUE_TABLE_FIELD` AS id,
 'PROMPT_TEXT' AS prompt
   FROM `PROJECT_ID_DATASET_TABLE`),
 STRUCT( <Temperature> AS temperature,
  <Top_P> AS top_p,
  <Top_K> AS top_k,
            <Max Output Token> AS max_output_tokens,
               <Is Flatten JSON Output> AS flatten_json_output,
            <Stop Sequences[]> AS stop_sequences,
        <Ground with Google Search> AS ground_with_google_search,
        <Safety Settings[]> AS safety_settings ) );

Ersetzen Sie Folgendes:

  • PROJECT_ID_DATASET_GEMINI_MODEL: Das in Ihrem Google Cloud Projekt erstellte Gemini-Remote-Modell mit dem Präfix der Projekt-ID und des BigQuery-Datasets.
  • UNIQUE_TABLE_FIELD: Das eindeutige Tabellenfeld in der BigQuery-Tabelle, für das Sie die Gemini-Antwort abrufen möchten.
  • PROMPT_TEXT: Der Prompt-String, den Sie Gemini zur Verfügung stellen möchten.
  • PROJECT_ID_DATASET_TABLE: Die BigQuery-Tabelle mit Daten, die Sie mit Gemini und dem übergebenen Prompt analysieren möchten.

Abfrage zum Aktualisieren der BigQuery-Vektordatenbank

CREATE OR REPLACE TABLE `PROJECT_ID_DATASET_BQ_VECTOR_DB_TABLE` AS (
 SELECT id, content, ml_generate_embedding_result AS embedding
 FROM ML.GENERATE_EMBEDDING(
   MODEL `PROJECT_ID_DATASET_EMBEDDING_MODEL`,
   ( SELECT `TABLE_FIELD_NAME_WHICH_HAS_THE_TEXT` AS content,
            `<Unique Table Field>` as id
     FROM `PROJECT_ID_DATASET_TABLE` ),
   STRUCT( <Is Flatten JSON Output> AS flatten_json_output,
           <Task Type> as task_type,
           <Output Dimensionality> as output_dimensionality )));

Ersetzen Sie Folgendes:

  • PROJECT_ID_DATASET_BQ_VECTOR_DB_TABLE: Die BigQuery-Vektordatenbanktabelle, in der Einbettungen für Ihre neuesten Unternehmensdaten gespeichert werden.
  • PROJECT_ID_DATASET_EMBEDDING_MODEL: Das in Ihrem Google Cloud Projekt erstellte Gemini-Remote-Modell mit dem Präfix der Projekt-ID und des BigQuery-Datasets.
  • TABLE_FIELD_NAME_WHICH_HAS_THE_TEXT: Der Name des BigQuery-Tabellenfelds mit den Daten, für die Sie Einbettungen generieren möchten.
  • UNIQUE_TABLE_FIELD: Das eindeutige Tabellenfeld in der BigQuery-Tabelle, anhand dessen Sie die Einbettungen in der BigQuery-Vektordatenbanktabelle speichern möchten.
  • PROJECT_ID_DATASET_TABLE: Die BigQuery-Tabelle mit den Daten, für die Sie Einbettungen generieren möchten.
DECLARE search_query STRING DEFAULT SEARCH_STRING;
SELECT *
  FROM VECTOR_SEARCH(
  TABLE `PROJECT_ID_DATASET_BQ_VECTOR_DB_TABLE`, 'embedding',
  (
    SELECT ml_generate_embedding_result, content AS query
    FROM ML.GENERATE_EMBEDDING(
      MODEL `PROJECT_ID_DATASET_EMBEDDING_MODEL`,
      (SELECT search_query AS content))
    ), top_k => <number of nearest neighbors to return> );

Ersetzen Sie Folgendes:

  • SEARCH_STRING: Der Suchstring in natürlicher Sprache, anhand dessen ähnliche Elemente aus der BigQuery-Vektordatenbank gefunden werden sollen. Sie können auch einen benannten Parameter dafür festlegen und den Suchstring über das SDK als Abfrageparameter aus der ABAP-Anwendungslogik übergeben.
  • PROJECT_ID_DATASET_BQ_VECTOR_DB_TABLE: Der Name der BigQuery-Vektordatenbanktabelle mit den Einbettungen, vorangestellt mit der Projekt-ID und dem BigQuery-Dataset.
  • PROJECT_ID_DATASET_EMBEDDING_MODEL: Das in Ihrem Google Cloud Projekt erstellte Gemini-Remote-Modell mit dem Präfix der Projekt-ID und des BigQuery-Datasets.

Unternehmensabfragen aus BigQuery abrufen

Verwenden Sie die ABAP-Klasse /GOOG/CL_BQ_QUERY, um die in BigQuery gespeicherten Abfragen abzurufen. Die Klasse verwendet intern die Dataform API, um die gespeicherten Abfragen abzurufen, die dann von anderen Modulen des SDK verwendet werden.

Klasse instanziieren

Erstellen Sie eine Instanz der Klasse mit dem Namen des Clientschlüssels und dem Speicherort der Abfrage.

TRY.
    DATA(lo_bq_query) = NEW /goog/cl_bq_query( iv_key         = 'CLIENT_KEY'
                                               iv_location_id = 'QUERY_LOCATION_ID'
       iv_query_name  = 'SAVED_QUERY_NAME' ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
    cl_demo_output=>display( lo_cx_sdk->get_text( ) ).

ENDTRY.

Ersetzen Sie Folgendes:

  • CLIENT_KEY: Der Clientschlüssel, den Sie während der Einrichtung der Authentifizierung für die Authentifizierung bei Google Cloud konfiguriert haben.
  • QUERY_LOCATION_ID: Der Speicherort, Google Cloud unter dem die Abfrage gespeichert wird.
  • SAVED_QUERY_NAME: Der Name der Abfrage, mit dem die Abfrage in BigQuery gespeichert wird.

Die Referenz der Instanziierung der Klasse enthält den gespeicherten Abfragetext und wird von den anderen Modulen des BigQuery AI and ML SDK for ABAP verwendet, um auf die gespeicherte Abfrage zu verweisen.

Sie können die Abfrage auch als Abfragetext aus der Programmlogik unter dem Parameter IV_QUERY_TEXT übergeben.

TRY.
    DATA(lo_bq_query) = NEW /goog/cl_bq_query( iv_key         = 'CLIENT_KEY'
                                               iv_location_id = 'QUERY_LOCATION_ID'
       iv_query_text  = 'QUERY_TEXT' ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
    cl_demo_output=>display( lo_cx_sdk->get_text( ) ).

ENDTRY.

Festgelegte Abfrage überschreiben

Wenn Sie die festgelegte Abfrage in der Referenz der Klasse /GOOG/CL_BQ_QUERY durch eine andere Abfrage überschreiben möchten, verwenden Sie die Methode SET_QUERY der Klasse /GOOG/CL_BQ_QUERY. Dadurch wird die Abfrage ersetzt, die bei der Instanziierung der Klasse festgelegt wurde.

Das Überschreiben kann entweder durch Übergeben des Namens der gespeicherten Abfrage in BigQuery oder durch Übergeben des Abfragetexts aus der Programmlogik erfolgen.

Überschreiben mit dem Namen einer gespeicherten Abfrage

lo_bq_query->set_query( iv_query_name = 'QUERY_NAME' ).

Überschreiben mit einem Abfragetext

lo_bq_query->set_query( iv_query_text = 'QUERY_TEXT' ).

Abfrageparameter festlegen

Wenn Sie benannte Parameter für eine parametisierte Abfrage übergeben möchten, die in BigQuery gespeichert ist, verwenden Sie die Methode SET_QUERY_PARAMETERS der Klasse /GOOG/CL_BQ_QUERY. Die Parameternamen für diese Parameter stimmen mit den in den gespeicherten Abfragen definierten Namen überein. Parameterwerte für die Parameternamen können mit dieser Methode während der Laufzeit von der Anwendungslogik übergeben werden.


DATA lt_query_parameters    TYPE /goog/cl_bq_query=>ty_t_query_parameters.
<Prepare lt_query_parameters>
TRY.
    DATA(lo_bq_query) = NEW /goog/cl_bq_query( iv_key         = 'CLIENT_KEY'
                                               iv_location_id = 'QUERY_LOCATION_ID'
       iv_query_name  = 'SAVED_QUERY_NAME' ).
    lo_bq_query->set_query_parameters( it_query_parameters = lt_query_patameters ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
    cl_demo_output=>display( lo_cx_sdk->get_text( ) ).

ENDTRY.

Wertbasierte Parameter übergeben

Wenn Sie wertbasierte Parameter zusammen mit Parameternamen und ‑typ übergeben möchten, verwenden Sie die Methode SET_QUERY_PARAMETERS der Klasse /GOOG/CL_BQ_QUERY.

DATA lt_query_parameters    TYPE /goog/cl_bq_query=>ty_t_query_parameters,
DATA ls_query_parameter     TYPE /goog/cl_bq_query=>ty_query_parameter.

ls_query_parameter-parameter_name  = 'PARAMETER_NAME'.
ls_query_parameter-parameter_type  = 'PARAMETER_TYPE'.
ls_query_parameter-parameter_value = 'PARAMETER_VALUE'.

APPEND ls_query_parameter TO lt_query_parameters.
CLEAR ls_query_parameter.

TRY.
    DATA(lo_bq_query) = NEW /goog/cl_bq_query( iv_key         = 'CLIENT_KEY'
                                               iv_location_id = 'QUERY_LOCATION_ID'
       iv_query_name  = 'SAVED_QUERY_NAME' ).
    lo_bq_query->set_query_parameters( it_query_parameters = lt_query_patameters ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
    cl_demo_output=>display( lo_cx_sdk->get_text( ) ).

ENDTRY.

Ersetzen Sie Folgendes:

  • PARAMETER_NAME: Der Name des Parameters, der in der gespeicherten Abfrage als benannter Parameter definiert ist.
  • PARAMETER_TYPE: Der gültige Datentyp des Parameters.
  • PARAMETER_VALUE: Der Wert in Form eines Strings.
  • CLIENT_KEY: Der Clientschlüssel, den Sie während der Einrichtung der Authentifizierung für die Authentifizierung bei Google Cloud konfiguriert haben.
  • QUERY_LOCATION_ID: Der Speicherort, Google Cloud unter dem die Abfrage gespeichert wird.
  • SAVED_QUERY_NAME: Der Name der Abfrage, mit dem die Abfrage in BigQuery gespeichert wird.

Arraybasierte Parameter übergeben

Wenn Sie arraybasierte Parameter zusammen mit dem Parameternamen und den Arraywerten übergeben möchten, verwenden Sie die Methode SET_QUERY_PARAMETERS der Klasse /GOOG/CL_BQ_QUERY.

DATA lt_query_parameters    TYPE /goog/cl_bq_query=>ty_t_query_parameters,
DATA ls_query_parameter     TYPE /goog/cl_bq_query=>ty_query_parameter.

ls_query_parameter-parameter_name  = 'PARAMETER_NAME'.
ls_query_parameter-parameter_type = 'ARRAY'.
ls_query_parameter-array_type = 'ARRAY_TYPE'.

APPEND 'ARRAY_VALUE' TO ls_query_parameter-array_values.
APPEND 'ARRAY_VALUE' TO ls_query_parameter-array_values.
APPEND....

APPEND ls_query_parameter TO lt_query_parameters.
CLEAR ls_query_parameter.

TRY.
    DATA(lo_bq_query) = NEW /goog/cl_bq_query( iv_key         = 'CLIENT_KEY'
                                               iv_location_id = 'QUERY_LOCATION_ID'
       iv_query_name  = 'SAVED_QUERY_NAME' ).
    lo_bq_query->set_query_parameters( it_query_parameters = lt_query_patameters ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
    cl_demo_output=>display( lo_cx_sdk->get_text( ) ).

ENDTRY.

Ersetzen Sie Folgendes:

  • PARAMETER_NAME: Der Name des Parameters, der in der gespeicherten Abfrage als benannter Parameter definiert ist.
  • ARRAY_TYPE: Der gültige Array-Datentyp.
  • ARRAY_VALUE: Die Werte des Arrays in Form eines Strings,
  • CLIENT_KEY: Der Clientschlüssel, den Sie während der Einrichtung der Authentifizierung für die Authentifizierung bei Google Cloud konfiguriert haben.
  • QUERY_LOCATION_ID: Der Speicherort, Google Cloud unter dem die Abfrage gespeichert wird.
  • SAVED_QUERY_NAME: Der Name der Abfrage, mit dem die Abfrage in BigQuery gespeichert wird.

Struct-basierte Parameter übergeben

Wenn Sie eine Struktur als Parameter zusammen mit dem Namen, dem Typ und dem Wert des Strukturfelds übergeben möchten, verwenden Sie die Methode SET_QUERY_PARAMETERS der Klasse /GOOG/CL_BQ_QUERY.


DATA lt_query_parameters    TYPE /goog/cl_bq_query=>ty_t_query_parameters,
DATA ls_query_parameter     TYPE /goog/cl_bq_query=>ty_query_parameter,
DATA ls_struct_values       TYPE /goog/cl_bq_query=>ty_struct_values.

ls_query_parameter-parameter_name  = 'PARAMETER_NAME'.
ls_query_parameter-parameter_type = 'STRUCT'.

ls_struct_values-field_name = 'STRUCT_FIELD_NAME'.
ls_struct_values-field_type = 'STRUCT_FIELD_TYPE'.
ls_struct_values-field_value = 'STRUCT_FIELD_VALUE'.

APPEND ls_struct_values TO ls_query_parameter-struct_values.
CLEAR ls_struct_values.
....

APPEND ls_query_parameter TO lt_query_parameters.
CLEAR ls_query_parameter.

TRY.
    DATA(lo_bq_query) = NEW /goog/cl_bq_query( iv_key         = 'CLIENT_KEY'
                                               iv_location_id = 'QUERY_LOCATION_ID'
       iv_query_name  = 'SAVED_QUERY_NAME' ).
    lo_bq_query->set_query_parameters( it_query_parameters = lt_query_patameters ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
    cl_demo_output=>display( lo_cx_sdk->get_text( ) ).

ENDTRY.

Ersetzen Sie Folgendes:

  • PARAMETER_NAME: Der Name des Parameters, der in der gespeicherten Abfrage als benannter Parameter definiert ist.
  • STRUCT_FIELD_NAME: Der Feldname der Struktur.
  • STRUCT_FIELD_TYPE: Der gültige Datentyp für Strukturen.
  • STRUCT_FIELD_VALUE: Der Wert des Strukturfelds in Form eines Strings.
  • CLIENT_KEY: Der Clientschlüssel, den Sie während der Einrichtung der Authentifizierung für die Authentifizierung bei Google Cloud konfiguriert haben.
  • QUERY_LOCATION_ID: Der Speicherort, Google Cloud unter dem die Abfrage gespeichert wird.
  • SAVED_QUERY_NAME: Der Name der Abfrage, mit dem die Abfrage in BigQuery gespeichert wird.

Abfragetext abrufen

Wenn Sie den Abfragetext für eine in BigQuery gespeicherte Abfrage abrufen möchten, verwenden Sie die Methode GET_QUERY_TEXT der Klasse /GOOG/CL_BQ_QUERY.

TRY.
    DATA(lo_bq_query) = NEW /goog/cl_bq_query( iv_key         = 'CLIENT_KEY'
                                               iv_location_id = 'QUERY_LOCATION_ID'
       iv_query_name  = 'SAVED_QUERY_NAME' ).
    DATA(lv_query_text) = lo_bq_query->get_query_text( ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
    cl_demo_output=>display( lo_cx_sdk->get_text( ) ).

ENDTRY.

Ersetzen Sie Folgendes:

  • CLIENT_KEY: Der Clientschlüssel, den Sie während der Einrichtung der Authentifizierung für die Authentifizierung bei Google Cloud konfiguriert haben.
  • QUERY_LOCATION_ID: Der Speicherort, Google Cloud unter dem die Abfrage gespeichert wird.
  • SAVED_QUERY_NAME: Der Name der Abfrage, mit dem die Abfrage in BigQuery gespeichert wird.

LV_QUERY_TEXT enthält die Abfrage, die für den SAVED_QUERY_NAME verwaltet wird.

Abfrageparameter abrufen

Wenn Sie die über die SDK-Methode SET_QUERY_PARAMETERS festgelegten Abfrageparameter abrufen möchten, verwenden Sie die Methode GET_QUERY_PARAMETERS der Klasse /GOOG/CL_BQ_QUERY.

DATA lt_query_parameters    TYPE /goog/cl_bq_query=>ty_t_query_parameters,
DATA ls_query_parameter     TYPE /goog/cl_bq_query=>ty_query_parameter.

ls_query_parameter-parameter_name  = 'PARAMETER_NAME'.
ls_query_parameter-parameter_type  = 'PARAMETER_TYPE'.
ls_query_parameter-parameter_value = 'PARAMETER_VALUE'.

APPEND ls_query_parameter TO lt_query_parameters.
CLEAR ls_query_parameter.

TRY.
    DATA(lo_bq_query) = NEW /goog/cl_bq_query( iv_key         = 'CLIENT_KEY'
                                               iv_location_id = 'QUERY_LOCATION_ID'
       iv_query_name  = 'SAVED_QUERY_NAME' ).
    lo_bq_query->set_query_parameters( it_query_parameters = lt_query_patameters ).
    DATA(lt_parameters) = lo_bq_query->get_query_parameters( ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
    cl_demo_output=>display( lo_cx_sdk->get_text( ) ).

ENDTRY.

Ersetzen Sie Folgendes:

  • PARAMETER_NAME: Der Name des Parameters, der in der gespeicherten Abfrage als benannter Parameter definiert ist.
  • PARAMETER_TYPE: Der gültige Datentyp des Parameters.
  • PARAMETER_VALUE: Der Wert in Form eines Strings.
  • CLIENT_KEY: Der Clientschlüssel, den Sie während der Einrichtung der Authentifizierung für die Authentifizierung bei Google Cloud konfiguriert haben.
  • QUERY_LOCATION_ID: Der Speicherort, Google Cloud unter dem die Abfrage gespeichert wird.
  • SAVED_QUERY_NAME: Der Name der Abfrage, mit der die Abfrage in BigQuery gespeichert wird.

LT_PARAMETERS enthält die Abfrageparameter, die für SAVED_QUERY_NAME festgelegt sind.