El SDK de BigQuery AI y ML para ABAP te permite usar BigQuery como un repositorio de consultas centralizado para almacenar, mantener y recuperar consultas que puedes ejecutar desde tus aplicaciones de ABAP.
Un repositorio de consultas centralizado proporciona una única fuente de información para las consultas validadas y optimizadas. BigQuery, como un repositorio de consultas centralizado, es utilizado por diferentes módulos del SDK de BigQuery AI y ML para ABAP para recuperar y ejecutar las consultas guardadas.
Para obtener más información sobre las consultas guardadas en BigQuery, consulta Introducción a las consultas guardadas.
Antes de comenzar
Antes de usar BigQuery como un repositorio de consultas centralizado, asegúrate de que tú o tus administradores hayan completado los siguientes requisitos previos:
- Habilitaste la API de BigQuery en tu proyecto de Google Cloud. Para obtener información sobre cómo habilitar las Google Cloud APIs, consulta Habilita las APIs.
- Habilitaste BigQuery Studio en tu proyecto de Google Cloud.
- Tienes los roles necesarios para poder crear y guardar consultas.
- La facturación está habilitada para tu proyecto de Google Cloud.
- Instalaste el SDK de BigQuery AI y ML para ABAP en tu entorno de SAP.
Crea consultas empresariales en BigQuery
Para crear borradores, validar y guardar tus consultas en BigQuery, usa BigQuery Studio. Para obtener información sobre cómo crear consultas en BigQuery Studio, consulta Crea consultas guardadas. Las consultas se guardan en tu proyecto de Google Cloud con un nombre y una ubicación.
También puedes compartir las consultas con otros usuarios. Si deseas obtener detalles para compartir una consulta guardada con un usuario, consulta Cómo compartir consultas guardadas.
Muestras de consultas
En los siguientes ejemplos de consulta, se muestra cómo estructurar tus consultas.
Consulta para invocar modelos de 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 ) );
Reemplaza lo siguiente:
PROJECT_ID_DATASET_GEMINI_MODEL
: El modelo remoto de Gemini creado en tu proyecto de Google Cloud, con el ID del proyecto y el conjunto de datos de BigQuery como prefijo.UNIQUE_TABLE_FIELD
: Es el campo de tabla único en la tabla de BigQuery con el que deseas obtener la respuesta de Gemini.PROMPT_TEXT
: Es la cadena de instrucciones que deseas proporcionar a Gemini.PROJECT_ID_DATASET_TABLE
: Es la tabla de BigQuery que tiene los datos que deseas analizar con Gemini con la instrucción pasada.
Consulta para mantener actualizada la base de datos de vectores de 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 )));
Reemplaza lo siguiente:
PROJECT_ID_DATASET_BQ_VECTOR_DB_TABLE
: Es la tabla de la base de datos de vectores de BigQuery para almacenar incorporaciones de tus datos empresariales más recientes.PROJECT_ID_DATASET_EMBEDDING_MODEL
: El modelo remoto de Gemini creado en tu proyecto de Google Cloud, con el ID del proyecto y el conjunto de datos de BigQuery como prefijo.TABLE_FIELD_NAME_WHICH_HAS_THE_TEXT
: Es el nombre del campo de la tabla de BigQuery que tiene los datos para los que deseas generar incorporaciones.UNIQUE_TABLE_FIELD
: Es el campo de tabla único en la tabla de BigQuery con el que deseas guardar las incorporaciones en la tabla de la base de datos de vectores de BigQuery.PROJECT_ID_DATASET_TABLE
: Es la tabla de BigQuery que tiene los datos para los que deseas generar incorporaciones.
Consulta para realizar una búsqueda vectorial
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> );
Reemplaza lo siguiente:
SEARCH_STRING
: Es la cadena de búsqueda basada en lenguaje natural con la que deseas encontrar elementos similares en la base de datos de vectores de BigQuery. También puedes establecer un parámetro con nombre para esto y pasar la cadena de búsqueda como un parámetro de consulta desde la lógica de la aplicación de ABAP con el SDK.PROJECT_ID_DATASET_BQ_VECTOR_DB_TABLE
: Es el nombre de la tabla de la base de datos de vectores de BigQuery que tiene las incorporaciones, con el ID del proyecto y el conjunto de datos de BigQuery como prefijo.PROJECT_ID_DATASET_EMBEDDING_MODEL
: El modelo remoto de Gemini creado en tu proyecto de Google Cloud, con el ID del proyecto y el conjunto de datos de BigQuery como prefijo.
Cómo recuperar consultas empresariales de BigQuery
Para recuperar las consultas guardadas en BigQuery, usa la clase ABAP /GOOG/CL_BQ_QUERY
.
La clase usa internamente la API de Dataform para recuperar las consultas guardadas, que luego usan otros módulos del SDK.
Cómo crear una instancia de la clase
Crea una instancia de la clase con el nombre de la clave de cliente y la ubicación de la consulta.
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.
Reemplaza lo siguiente:
CLIENT_KEY
: Es la clave del cliente que configuraste para la autenticación a Google Cloud durante la configuración de la autenticación.QUERY_LOCATION_ID
: Es la Google Cloud ubicación en la que se guarda la consulta.SAVED_QUERY_NAME
: Es el nombre de la consulta con la que se guarda la consulta en BigQuery.
La referencia de la clase, una vez que se crea una instancia, contiene el texto de la consulta guardada y la usan los otros módulos del SDK de BigQuery AI y ML para ABAP para hacer referencia a la consulta guardada.
También puedes pasar la consulta como texto de consulta desde la lógica del programa en el parámetro 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.
Anula una consulta establecida
Para anular la consulta establecida en la referencia de la clase /GOOG/CL_BQ_QUERY
con otra consulta, usa el método SET_QUERY
de la clase /GOOG/CL_BQ_QUERY
.
Esto reemplaza el conjunto de consultas establecido en el momento de la creación de la instancia de la clase.
La anulación se puede realizar pasando el nombre de la consulta guardada en BigQuery o el texto de la consulta que se pasa desde la lógica del programa.
Anula el nombre de una búsqueda guardada
lo_bq_query->set_query( iv_query_name = 'QUERY_NAME' ).
Anula el texto de una consulta
lo_bq_query->set_query( iv_query_text = 'QUERY_TEXT' ).
Establece parámetros de consulta
Para pasar parámetros con nombre para una consulta con parámetros
guardada en BigQuery,
usa el método SET_QUERY_PARAMETERS
de la clase /GOOG/CL_BQ_QUERY
.
Los nombres de los parámetros de estos parámetros son los mismos que se definen en las consultas guardadas.
Los valores de los parámetros para los nombres de los parámetros se pueden pasar desde la lógica de la aplicación durante el tiempo de ejecución con este método.
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.
Cómo pasar parámetros basados en valores
Para pasar parámetros basados en valores junto con el nombre y el tipo del parámetro, usa el método SET_QUERY_PARAMETERS
de la clase /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.
Reemplaza lo siguiente:
PARAMETER_NAME
: Es el nombre del parámetro definido en la consulta guardada como parámetro con nombre.PARAMETER_TYPE
: Es el tipo de datos válido del parámetro.PARAMETER_VALUE
: Es el valor en forma de cadena.CLIENT_KEY
: Es la clave del cliente que configuraste para la autenticación a Google Cloud durante la configuración de la autenticación.QUERY_LOCATION_ID
: Es la Google Cloud ubicación en la que se guarda la consulta.SAVED_QUERY_NAME
: Es el nombre de la consulta con la que se guarda la consulta en BigQuery.
Cómo pasar parámetros basados en arrays
Para pasar parámetros basados en arrays junto con el nombre del parámetro y los valores del array, usa
el método SET_QUERY_PARAMETERS
de la clase /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.
Reemplaza lo siguiente:
PARAMETER_NAME
: Es el nombre del parámetro definido en la consulta guardada como parámetro con nombre.ARRAY_TYPE
: Es el tipo de datos de array válido.ARRAY_VALUE
: Los valores del array en forma de cadenaCLIENT_KEY
: Es la clave del cliente que configuraste para la autenticación a Google Cloud durante la configuración de la autenticación.QUERY_LOCATION_ID
: Es la Google Cloud ubicación en la que se guarda la consulta.SAVED_QUERY_NAME
: Es el nombre de la consulta con la que se guarda la consulta en BigQuery.
Cómo pasar parámetros basados en struct
Para pasar una estructura como parámetro junto con el nombre del campo, el tipo de campo y el valor del campo de la estructura, usa el método SET_QUERY_PARAMETERS
de la clase /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.
Reemplaza lo siguiente:
PARAMETER_NAME
: Es el nombre del parámetro definido en la consulta guardada como parámetro con nombre.STRUCT_FIELD_NAME
: Es el nombre del campo de la estructura.STRUCT_FIELD_TYPE
: Es el tipo de datos de struct válido.STRUCT_FIELD_VALUE
: Es el valor del campo de estructura en forma de cadena.CLIENT_KEY
: Es la clave del cliente que configuraste para la autenticación a Google Cloud durante la configuración de la autenticación.QUERY_LOCATION_ID
: Es la Google Cloud ubicación en la que se guarda la consulta.SAVED_QUERY_NAME
: Es el nombre de la consulta con la que se guarda la consulta en BigQuery.
Cómo obtener el texto de la consulta
Para recuperar el texto de una consulta guardada en BigQuery, usa
el método GET_QUERY_TEXT
de la clase /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.
Reemplaza lo siguiente:
CLIENT_KEY
: Es la clave del cliente que configuraste para la autenticación a Google Cloud durante la configuración de la autenticación.QUERY_LOCATION_ID
: Es la Google Cloud ubicación en la que se guarda la consulta.SAVED_QUERY_NAME
: Es el nombre de la consulta con la que se guarda la consulta en BigQuery.
LV_QUERY_TEXT
contiene la consulta que se mantiene en SAVED_QUERY_NAME
.
Obtén parámetros de consulta
Para recuperar los parámetros de consulta establecidos a través del método SET_QUERY_PARAMETERS
del SDK, usa el método GET_QUERY_PARAMETERS
de la clase /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.
Reemplaza lo siguiente:
PARAMETER_NAME
: Es el nombre del parámetro definido en la consulta guardada como parámetro con nombre.PARAMETER_TYPE
: Es el tipo de datos válido del parámetro.PARAMETER_VALUE
: Es el valor en forma de una cadena.CLIENT_KEY
: Es la clave del cliente que configuraste para la autenticación a Google Cloud durante la configuración de la autenticación.QUERY_LOCATION_ID
: Es la Google Cloud ubicación en la que se guarda la consulta.SAVED_QUERY_NAME
: Es el nombre de la consulta con la que se guarda la consulta en BigQuery.
LT_PARAMETERS
contiene los parámetros de consulta establecidos en SAVED_QUERY_NAME
.