Memorizzare e gestire le query aziendali in BigQuery

L'SDK BigQuery AI e ML per ABAP ti consente di utilizzare BigQuery come repository di query centralizzato per archiviare, gestire e recuperare le query che puoi eseguire dalle tue applicazioni ABAP.

Un repository di query centralizzato fornisce un'unica fonte di verità per le query convalidate e ottimizzate. BigQuery come repository di query centralizzato viene utilizzato da diversi moduli dell'SDK BigQuery AI e ML per ABAP per recuperare ed eseguire le query salvate.

Per ulteriori informazioni sulle query salvate in BigQuery, consulta Introduzione alle query salvate.

Prima di iniziare

Prima di utilizzare BigQuery come repository di query centralizzato, assicurati che tu o i tuoi amministratori abbiate completato i seguenti prerequisiti:

Creare query aziendali in BigQuery

Per creare bozze, convalidare e salvare le query in BigQuery, utilizza BigQuery Studio. Per informazioni su come creare query in BigQuery Studio, consulta Creare query salvate. Le query vengono salvate nel Google Cloud progetto in base a un nome e a una posizione.

Puoi anche condividere le query con altri utenti. Per informazioni dettagliate su come condividere una query salvata con un utente, consulta Condividere le query salvate.

Esempi di query

I seguenti esempi di query illustrano come strutturarle.

Query per l'invocazione dei modelli Gemini

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 ) );

Sostituisci quanto segue:

  • PROJECT_ID_DATASET_GEMINI_MODEL: il modello remoto Gemini creato nel tuo Google Cloud progetto, con il prefisso ID progetto e set di dati BigQuery.
  • UNIQUE_TABLE_FIELD: il campo della tabella univoco nella tabella BigQuery in base al quale vuoi ricevere la risposta di Gemini.
  • PROMPT_TEXT: la stringa del prompt che vuoi fornire a Gemini.
  • PROJECT_ID_DATASET_TABLE: la tabella BigQuery contenente i dati che vuoi analizzare utilizzando Gemini con il prompt passato.

Query per mantenere aggiornato il database di vettori BigQuery

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 )));

Sostituisci quanto segue:

  • PROJECT_ID_DATASET_BQ_VECTOR_DB_TABLE: la tabella del database di vettori BigQuery per archiviare gli embedding per i dati aziendali più recenti.
  • PROJECT_ID_DATASET_EMBEDDING_MODEL: il modello remoto Gemini creato nel tuo Google Cloud progetto, con il prefisso ID progetto e set di dati BigQuery.
  • TABLE_FIELD_NAME_WHICH_HAS_THE_TEXT: il nome del campo della tabella BigQuery contenente i dati per i quali vuoi generare gli embedding.
  • UNIQUE_TABLE_FIELD: il campo tabella univoco nella tabella BigQuery in base al quale vuoi salvare gli embedding nella tabella del database di vettori BigQuery.
  • PROJECT_ID_DATASET_TABLE: la tabella BigQuery contenente i dati per i quali vuoi generare gli embedding.
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> );

Sostituisci quanto segue:

  • SEARCH_STRING: la stringa di ricerca basata sul linguaggio naturale in base alla quale vuoi trovare elementi simili nel database vettoriale BigQuery. Puoi anche impostare un parametro denominato e passare la stringa di ricerca come parametro di query dalla logica dell'applicazione ABAP utilizzando l'SDK.
  • PROJECT_ID_DATASET_BQ_VECTOR_DB_TABLE: il nome della tabella del database di vettori BigQuery contenente gli embedding, preceduto dall'ID progetto e dal set di dati BigQuery.
  • PROJECT_ID_DATASET_EMBEDDING_MODEL: il modello remoto Gemini creato nel tuo Google Cloud progetto, con il prefisso ID progetto e set di dati BigQuery.

Recuperare le query aziendali da BigQuery

Per recuperare le query salvate in BigQuery, utilizza la classe ABAP /GOOG/CL_BQ_QUERY. Il codice interno della classe utilizza l'API Dataform per recuperare le query salvate, che vengono poi utilizzate da altri moduli dell'SDK.

Crea un'istanza della classe

Esegui l'inizializzazione della classe utilizzando il nome della chiave del client e la posizione della 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' ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
    cl_demo_output=>display( lo_cx_sdk->get_text( ) ).

ENDTRY.

Sostituisci quanto segue:

  • CLIENT_KEY: la chiave client che hai configurato per l'autenticazione a Google Cloud durante la configurazione dell'autenticazione.
  • QUERY_LOCATION_ID: la Google Cloud posizione in cui viene salvata la query.
  • SAVED_QUERY_NAME: il nome della query con cui la query viene salvata in BigQuery.

Il riferimento della classe, una volta creato, contiene il testo della query salvata e viene utilizzato dagli altri moduli dell'SDK BigQuery AI e ML per ABAP per fare riferimento alla query salvata.

Puoi anche passare la query come testo della query dalla logica del programma nel parametro IV_QUERY_TEXT.

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.

Sostituire una query impostata

Per sostituire la query impostata nel riferimento della classe /GOOG/CL_BQ_QUERY con un'altra query, utilizza il metodo SET_QUERY della classe /GOOG/CL_BQ_QUERY. Questo sostituisce il set di query al momento dell'inizializzazione della classe.

L'override può essere eseguito passando il nome della query salvata in BigQuery o il testo della query passato dalla logica del programma.

Sostituzione utilizzando il nome di una query salvata

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

Sostituzione utilizzando un testo della query

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

Imposta i parametri di query

Per passare i parametri denominati per una query con parametri salvata in BigQuery, utilizza il metodo SET_QUERY_PARAMETERS della classe /GOOG/CL_BQ_QUERY. I nomi dei parametri sono gli stessi definiti nelle query salvate. I valori dei parametri per i nomi dei parametri possono essere passati dalla logica dell'applicazione durante l'esecuzione utilizzando questo metodo.


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.

Passare parametri basati sul valore

Per passare i parametri basati su valore insieme al nome e al tipo di parametro, utilizza il metodo SET_QUERY_PARAMETERS della classe /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.

Sostituisci quanto segue:

  • PARAMETER_NAME: il nome del parametro definito nella query salvata come parametro denominato.
  • PARAMETER_TYPE: il tipo di dati valido del parametro.
  • PARAMETER_VALUE: il valore sotto forma di stringa.
  • CLIENT_KEY: la chiave client che hai configurato per l'autenticazione a Google Cloud durante la configurazione dell'autenticazione.
  • QUERY_LOCATION_ID: la Google Cloud posizione in cui viene salvata la query.
  • SAVED_QUERY_NAME: il nome della query con cui la query viene salvata in BigQuery.

Passare parametri basati su array

Per passare parametri basati su array insieme al nome del parametro e ai valori dell'array, utilizza il metodo SET_QUERY_PARAMETERS della classe /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.

Sostituisci quanto segue:

  • PARAMETER_NAME: il nome del parametro definito nella query salvata come parametro denominato.
  • ARRAY_TYPE: il tipo di dati array valido.
  • ARRAY_VALUE: i valori dell'array sotto forma di stringa,
  • CLIENT_KEY: la chiave client che hai configurato per l'autenticazione a Google Cloud durante la configurazione dell'autenticazione.
  • QUERY_LOCATION_ID: la Google Cloud posizione in cui viene salvata la query.
  • SAVED_QUERY_NAME: il nome della query con cui la query viene salvata in BigQuery.

Passare parametri basati su struct

Per passare una struttura come parametro insieme al nome del campo della struttura, al tipo di campo della struttura e al valore del campo della struttura, utilizza il metodo SET_QUERY_PARAMETERS della classe /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.

Sostituisci quanto segue:

  • PARAMETER_NAME: il nome del parametro definito nella query salvata come parametro denominato.
  • STRUCT_FIELD_NAME: il nome del campo della struttura.
  • STRUCT_FIELD_TYPE: il tipo di dati struct valido.
  • STRUCT_FIELD_VALUE: il valore del campo della struttura sotto forma di stringa.
  • CLIENT_KEY: la chiave client che hai configurato per l'autenticazione a Google Cloud durante la configurazione dell'autenticazione.
  • QUERY_LOCATION_ID: la Google Cloud posizione in cui viene salvata la query.
  • SAVED_QUERY_NAME: il nome della query con cui la query viene salvata in BigQuery.

Ottieni il testo della query

Per recuperare il testo della query per una query salvata in BigQuery, utilizza il metodo GET_QUERY_TEXT della classe /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.

Sostituisci quanto segue:

  • CLIENT_KEY: la chiave client che hai configurato per l'autenticazione a Google Cloud durante la configurazione dell'autenticazione.
  • QUERY_LOCATION_ID: la Google Cloud posizione in cui viene salvata la query.
  • SAVED_QUERY_NAME: il nome della query con cui la query viene salvata in BigQuery.

LV_QUERY_TEXT gestisce la query mantenuta in base al SAVED_QUERY_NAME.

Ottieni i parametri di query

Per recuperare i parametri di query impostati tramite il metodo SDK SET_QUERY_PARAMETERS, utilizza il metodo GET_QUERY_PARAMETERS della classe /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.

Sostituisci quanto segue:

  • PARAMETER_NAME: il nome del parametro definito nella query salvata come parametro denominato.
  • PARAMETER_TYPE: il tipo di dati valido del parametro.
  • PARAMETER_VALUE: il valore sotto forma di stringa.
  • CLIENT_KEY: la chiave client che hai configurato per l'autenticazione a Google Cloud durante la configurazione dell'autenticazione.
  • QUERY_LOCATION_ID: la Google Cloud posizione in cui viene salvata la query.
  • SAVED_QUERY_NAME: il nome della query con cui la query viene salvata in BigQuery.

LT_PARAMETERS contiene i parametri di query impostati in base a SAVED_QUERY_NAME.