Le SDK BigQuery AI et ML pour ABAP vous permet d'utiliser BigQuery comme dépôt de requêtes centralisé pour stocker, gérer et récupérer les requêtes que vous pouvez exécuter à partir de vos applications ABAP.
Un dépôt de requêtes centralisé fournit une source unique de vérité pour les requêtes validées et optimisées. BigQuery en tant que dépôt de requêtes centralisé est utilisé par différents modules du SDK BigQuery AI et ML pour ABAP afin de récupérer et d'exécuter les requêtes enregistrées.
Pour en savoir plus sur les requêtes enregistrées dans BigQuery, consultez la page Présentation des requêtes enregistrées.
Avant de commencer
Avant d'utiliser BigQuery comme dépôt de requêtes centralisé, assurez-vous que vous ou vos administrateurs avez rempli les conditions préalables suivantes:
- Activez l'API BigQuery dans votre Google Cloud projet. Pour savoir comment activer des Google Cloud API, consultez Activer des API.
- Activez BigQuery Studio dans votre Google Cloud projet.
- Vous disposez des rôles requis pour créer et enregistrer des requêtes.
- La facturation est activée pour votre Google Cloud projet.
- Installer le SDK BigQuery AI et ML pour ABAP dans votre environnement SAP.
Créer des requêtes d'entreprise dans BigQuery
Pour rédiger, valider et enregistrer vos requêtes dans BigQuery, utilisez BigQuery Studio. Pour savoir comment créer des requêtes dans BigQuery Studio, consultez Créer des requêtes enregistrées. Les requêtes sont enregistrées dans votre Google Cloud projet avec un nom de requête et un emplacement.
Vous pouvez également les partager avec d'autres utilisateurs. Pour savoir comment partager une requête enregistrée avec un utilisateur, consultez Partager des requêtes enregistrées.
Exemples de requêtes
Les exemples de requêtes suivants montrent comment structurer vos requêtes.
Requête pour appeler des modèles 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 ) );
Remplacez les éléments suivants :
PROJECT_ID_DATASET_GEMINI_MODEL
: modèle à distance Gemini créé dans votre Google Cloud projet, précédé de l'ID du projet et de l'ensemble de données BigQuery.UNIQUE_TABLE_FIELD
: champ de table unique de la table BigQuery pour laquelle vous souhaitez obtenir la réponse Gemini.PROMPT_TEXT
: chaîne d'invite que vous souhaitez fournir à Gemini.PROJECT_ID_DATASET_TABLE
: table BigQuery contenant les données que vous souhaitez analyser à l'aide de Gemini avec la requête transmise.
Requête pour mettre à jour la base de données vectorielle 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 )));
Remplacez les éléments suivants :
PROJECT_ID_DATASET_BQ_VECTOR_DB_TABLE
: table de la base de données vectorielle BigQuery permettant de stocker des représentations vectorielles continues pour vos données d'entreprise les plus récentes.PROJECT_ID_DATASET_EMBEDDING_MODEL
: modèle à distance Gemini créé dans votre Google Cloud projet, précédé de l'ID du projet et de l'ensemble de données BigQuery.TABLE_FIELD_NAME_WHICH_HAS_THE_TEXT
: nom du champ de la table BigQuery contenant les données pour lesquelles vous souhaitez générer des représentations vectorielles continues.UNIQUE_TABLE_FIELD
: champ de table unique de la table BigQuery pour laquelle vous souhaitez enregistrer les représentations vectorielles continues dans la table de la base de données vectorielle BigQuery.PROJECT_ID_DATASET_TABLE
: table BigQuery contenant les données pour lesquelles vous souhaitez générer des représentations vectorielles continues.
Requête pour effectuer une recherche vectorielle
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> );
Remplacez les éléments suivants :
SEARCH_STRING
: chaîne de recherche basée sur le langage naturel à partir de laquelle vous souhaitez trouver des éléments similaires dans la base de données de vecteurs BigQuery. Vous pouvez également définir un paramètre nommé pour cela et transmettre la chaîne de recherche en tant que paramètre de requête à partir de la logique d'application ABAP à l'aide du SDK.PROJECT_ID_DATASET_BQ_VECTOR_DB_TABLE
: nom de la table de la base de données vectorielle BigQuery contenant les représentations vectorielles continues, précédé de l'ID du projet et de l'ensemble de données BigQuery.PROJECT_ID_DATASET_EMBEDDING_MODEL
: modèle à distance Gemini créé dans votre Google Cloud projet, précédé de l'ID du projet et de l'ensemble de données BigQuery.
Récupérer des requêtes d'entreprise à partir de BigQuery
Pour récupérer les requêtes enregistrées dans BigQuery, utilisez la classe ABAP /GOOG/CL_BQ_QUERY
.
La classe utilise en interne l'API Dataform pour récupérer les requêtes enregistrées, qui sont ensuite utilisées par d'autres modules du SDK.
Instancier la classe
Instanciez la classe à l'aide du nom de la clé client et de l'emplacement de la requête.
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.
Remplacez les éléments suivants :
CLIENT_KEY
: clé client que vous avez configurée pour l'authentification à Google Cloud lors de la configuration de l'authentification.QUERY_LOCATION_ID
: emplacement Google Cloud où la requête est enregistrée.SAVED_QUERY_NAME
: nom de la requête avec laquelle la requête est enregistrée dans BigQuery.
Une fois instanciée, la référence de la classe contient le texte de la requête enregistrée et est utilisée par les autres modules du SDK BigQuery AI et ML pour ABAP pour faire référence à la requête enregistrée.
Vous pouvez également transmettre la requête en tant que texte de requête à partir de la logique du programme sous le paramètre 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.
Forcer une requête définie
Pour remplacer la requête définie dans la référence de la classe /GOOG/CL_BQ_QUERY
par une autre requête, utilisez la méthode SET_QUERY
de la classe /GOOG/CL_BQ_QUERY
.
Cela remplace la requête définie au moment de l'instanciation de la classe.
Le forçage peut être effectué en transmettant le nom de la requête enregistrée dans BigQuery ou le texte de la requête transmis à partir de la logique du programme.
Forcer l'utilisation d'un nom de requête enregistrée
lo_bq_query->set_query( iv_query_name = 'QUERY_NAME' ).
Forcer l'utilisation d'un texte de requête
lo_bq_query->set_query( iv_query_text = 'QUERY_TEXT' ).
Définir des paramètres de requête
Pour transmettre des paramètres nommés pour une requête paramétrée enregistrée dans BigQuery, utilisez la méthode SET_QUERY_PARAMETERS
de la classe /GOOG/CL_BQ_QUERY
.
Les noms de ces paramètres sont identiques à ceux définis dans les requêtes enregistrées.
Les valeurs des paramètres pour les noms de paramètres peuvent être transmises à partir de la logique de l'application au moment de l'exécution à l'aide de cette méthode.
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.
Transmettre des paramètres basés sur la valeur
Pour transmettre des paramètres basés sur la valeur, ainsi que le nom et le type du paramètre, utilisez la méthode SET_QUERY_PARAMETERS
de la 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.
Remplacez les éléments suivants :
PARAMETER_NAME
: nom du paramètre défini dans la requête enregistrée en tant que paramètre nommé.PARAMETER_TYPE
: type de données valide du paramètre.PARAMETER_VALUE
: valeur sous forme de chaîne.CLIENT_KEY
: clé client que vous avez configurée pour l'authentification à Google Cloud lors de la configuration de l'authentification.QUERY_LOCATION_ID
: emplacement Google Cloud où la requête est enregistrée.SAVED_QUERY_NAME
: nom de la requête avec laquelle la requête est enregistrée dans BigQuery.
Transmettre des paramètres basés sur un tableau
Pour transmettre des paramètres basés sur un tableau avec le nom du paramètre et les valeurs du tableau, utilisez la méthode SET_QUERY_PARAMETERS
de la 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.
Remplacez les éléments suivants :
PARAMETER_NAME
: nom du paramètre défini dans la requête enregistrée en tant que paramètre nommé.ARRAY_TYPE
: type de données de tableau valide.ARRAY_VALUE
: valeurs du tableau sous forme de chaîne,CLIENT_KEY
: clé client que vous avez configurée pour l'authentification à Google Cloud lors de la configuration de l'authentification.QUERY_LOCATION_ID
: emplacement Google Cloud où la requête est enregistrée.SAVED_QUERY_NAME
: nom de la requête avec laquelle la requête est enregistrée dans BigQuery.
Transmettre des paramètres basés sur une structure
Pour transmettre une structure en tant que paramètre, ainsi que le nom, le type et la valeur du champ de la structure, utilisez la méthode SET_QUERY_PARAMETERS
de la 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.
Remplacez les éléments suivants :
PARAMETER_NAME
: nom du paramètre défini dans la requête enregistrée en tant que paramètre nommé.STRUCT_FIELD_NAME
: nom du champ de la structure.STRUCT_FIELD_TYPE
: type de données struct valide.STRUCT_FIELD_VALUE
: valeur du champ de structure sous forme de chaîne.CLIENT_KEY
: clé client que vous avez configurée pour l'authentification à Google Cloud lors de la configuration de l'authentification.QUERY_LOCATION_ID
: emplacement Google Cloud où la requête est enregistrée.SAVED_QUERY_NAME
: nom de la requête avec laquelle la requête est enregistrée dans BigQuery.
Obtenir le texte de la requête
Pour extraire le texte de la requête d'une requête enregistrée dans BigQuery, utilisez la méthode GET_QUERY_TEXT
de la 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.
Remplacez les éléments suivants :
CLIENT_KEY
: clé client que vous avez configurée pour l'authentification à Google Cloud lors de la configuration de l'authentification.QUERY_LOCATION_ID
: emplacement Google Cloud où la requête est enregistrée.SAVED_QUERY_NAME
: nom de la requête avec laquelle la requête est enregistrée dans BigQuery.
LV_QUERY_TEXT
contient la requête gérée par le SAVED_QUERY_NAME
.
Obtenir des paramètres de requête
Pour extraire les paramètres de requête définis via la méthode SET_QUERY_PARAMETERS
du SDK, utilisez la méthode GET_QUERY_PARAMETERS
de la 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.
Remplacez les éléments suivants :
PARAMETER_NAME
: nom du paramètre défini dans la requête enregistrée en tant que paramètre nommé.PARAMETER_TYPE
: type de données valide du paramètre.PARAMETER_VALUE
: valeur sous forme de chaîne.CLIENT_KEY
: clé client que vous avez configurée pour l'authentification à Google Cloud lors de la configuration de l'authentification.QUERY_LOCATION_ID
: emplacement Google Cloud où la requête est enregistrée.SAVED_QUERY_NAME
: nom de la requête avec laquelle la requête est enregistrée dans BigQuery.
LT_PARAMETERS
contient les paramètres de requête définis sur SAVED_QUERY_NAME
.