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:
- L'API BigQuery è stata attivata nel tuo Google Cloud progetto. Per informazioni su come abilitare le Google Cloud API, consulta Abilitazione delle API.
- Abilitato BigQuery Studio nel tuo Google Cloud progetto.
- Devi disporre dei ruoli richiesti per poter creare e salvare le query.
- La fatturazione sia attivata per il tuo Google Cloud progetto.
- Hai installato l'SDK BigQuery AI e ML per ABAP nel tuo ambiente SAP.
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.
Query per eseguire la ricerca vettoriale
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
.