O SDK de IA e ML do BigQuery para ABAP permite usar o BigQuery como um repositório de consultas centralizado para armazenar, manter e extrair consultas que podem ser executadas nos seus aplicativos ABAP.
Um repositório de consultas centralizado oferece uma única fonte de verdade para consultas validadas e otimizadas. O BigQuery como um repositório de consultas centralizado é usado por diferentes módulos do SDK de IA e ML do BigQuery para ABAP para recuperar e executar as consultas salvas.
Para mais informações sobre as consultas salvas no BigQuery, consulte Introdução às consultas salvas.
Antes de começar
Antes de usar o BigQuery como um repositório de consultas centralizado, verifique se você ou seus administradores concluíram os seguintes pré-requisitos:
- Ative a API BigQuery no seu projeto do Google Cloud. Para informações sobre como ativar Google Cloud APIs, consulte Como ativar APIs.
- Ative o BigQuery Studio no seu projeto do Google Cloud.
- Você tem os papéis necessários para criar e salvar consultas.
- O faturamento está ativado para o projeto do Google Cloud.
- Instalou o SDK de IA e ML do BigQuery para ABAP no seu ambiente SAP.
Criar consultas empresariais no BigQuery
Para elaborar, validar e salvar suas consultas no BigQuery, use o BigQuery Studio. Para saber como criar consultas no BigQuery Studio, consulte Criar consultas salvas. As consultas são salvas no seu projeto do Google Cloud com um nome de consulta e um local.
Você também pode compartilhar as consultas com outros usuários. Para saber como compartilhar uma consulta salva com um usuário, consulte Compartilhar consultas salvas.
Amostras de consulta
Os exemplos de consulta a seguir ilustram como estruturar suas consultas.
Consulta para invocar modelos do 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 ) );
Substitua:
PROJECT_ID_DATASET_GEMINI_MODEL
: o modelo remoto do Gemini criado no seu projeto do Google Cloud, com o prefixo do ID do projeto e do conjunto de dados do BigQuery.UNIQUE_TABLE_FIELD
: o campo de tabela exclusivo na tabela do BigQuery em que você quer receber a resposta do Gemini.PROMPT_TEXT
: a string de comando que você quer fornecer ao Gemini.PROJECT_ID_DATASET_TABLE
: a tabela do BigQuery com os dados que você quer analisar usando o Gemini com o comando transmitido.
Consulta para manter o banco de dados vetorial do BigQuery atualizado
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 )));
Substitua:
PROJECT_ID_DATASET_BQ_VECTOR_DB_TABLE
: a tabela do banco de dados de vetores do BigQuery para armazenar embeddings dos dados empresariais mais recentes.PROJECT_ID_DATASET_EMBEDDING_MODEL
: o modelo remoto do Gemini criado no seu projeto do Google Cloud, com o prefixo do ID do projeto e do conjunto de dados do BigQuery.TABLE_FIELD_NAME_WHICH_HAS_THE_TEXT
: o nome do campo da tabela do BigQuery que tem os dados para gerar incorporações.UNIQUE_TABLE_FIELD
: o campo de tabela exclusivo na tabela do BigQuery em que você quer salvar as inclusões na tabela do banco de dados de vetores do BigQuery.PROJECT_ID_DATASET_TABLE
: a tabela do BigQuery com os dados para os quais você quer gerar embeddings.
Consulta para realizar uma pesquisa de vetor
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> );
Substitua:
SEARCH_STRING
: a string de pesquisa baseada em linguagem natural em que você quer encontrar itens semelhantes no banco de dados de vetores do BigQuery. Também é possível definir um parâmetro nomeado para isso e transmitir a string de pesquisa como um parâmetro de consulta da lógica do aplicativo ABAP usando o SDK.PROJECT_ID_DATASET_BQ_VECTOR_DB_TABLE
: o nome da tabela do banco de dados de vetores do BigQuery com as incorporações, com prefixo de ID do projeto e conjunto de dados do BigQuery.PROJECT_ID_DATASET_EMBEDDING_MODEL
: o modelo remoto do Gemini criado no seu projeto do Google Cloud, com o prefixo do ID do projeto e do conjunto de dados do BigQuery.
Extrair consultas corporativas do BigQuery
Para recuperar as consultas salvas no BigQuery, use a
classe ABAP /GOOG/CL_BQ_QUERY
.
A classe usa internamente a API Dataform para recuperar as consultas salvas, que são usadas por outros módulos do SDK.
Instanciar a classe
Instância a classe usando o nome da chave do cliente e o local da 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.
Substitua:
CLIENT_KEY
: a chave de cliente configurada para autenticação em Google Cloud durante a configuração de autenticação.QUERY_LOCATION_ID
: o Google Cloud local em que a consulta é salva.SAVED_QUERY_NAME
: o nome da consulta em que a consulta é salva no BigQuery.
A referência da classe, uma vez instanciada, contém o texto da consulta salva e é usada pelos outros módulos do SDK de IA e ML do BigQuery para ABAP para se referir à consulta salva.
Também é possível transmitir a consulta como texto de consulta da lógica do programa no 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.
Substituir uma consulta definida
Para substituir a consulta definida na referência da classe /GOOG/CL_BQ_QUERY
por outra consulta,
use o método SET_QUERY
da classe /GOOG/CL_BQ_QUERY
.
Isso substitui o conjunto de consultas no momento da instanciação da classe.
A substituição pode ser feita transmitindo o nome da consulta salva no BigQuery ou o texto da consulta transmitido pela lógica do programa.
Substituir usando um nome de consulta salvo
lo_bq_query->set_query( iv_query_name = 'QUERY_NAME' ).
Substituir usando um texto de consulta
lo_bq_query->set_query( iv_query_text = 'QUERY_TEXT' ).
Definir parâmetros de consulta
Para transmitir parâmetros nomeados para uma consulta parametrizada
salva no BigQuery,
use o método SET_QUERY_PARAMETERS
da classe /GOOG/CL_BQ_QUERY
.
Os nomes dos parâmetros são os mesmos definidos nas consultas salvas.
Os valores de parâmetro para os nomes de parâmetro podem ser transmitidos da
lógica do aplicativo durante a execução usando esse 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.
Transmitir parâmetros com base no valor
Para transmitir parâmetros com base em valores, além do nome e do tipo do parâmetro, use
o método SET_QUERY_PARAMETERS
da 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.
Substitua:
PARAMETER_NAME
: o nome do parâmetro definido na consulta salva como parâmetro nomeado.PARAMETER_TYPE
: o tipo de dados válido do parâmetro.PARAMETER_VALUE
: o valor no formato de uma string.CLIENT_KEY
: a chave de cliente configurada para autenticação em Google Cloud durante a configuração de autenticação.QUERY_LOCATION_ID
: o Google Cloud local em que a consulta é salva.SAVED_QUERY_NAME
: o nome da consulta em que a consulta é salva no BigQuery.
Transmitir parâmetros baseados em matrizes
Para transmitir parâmetros baseados em matriz com o nome do parâmetro e os valores da matriz, use
o método SET_QUERY_PARAMETERS
da 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.
Substitua:
PARAMETER_NAME
: o nome do parâmetro definido na consulta salva como parâmetro nomeado.ARRAY_TYPE
: o tipo de dados de matriz válido.ARRAY_VALUE
: os valores da matriz no formato de string.CLIENT_KEY
: a chave de cliente configurada para autenticação em Google Cloud durante a configuração de autenticação.QUERY_LOCATION_ID
: o Google Cloud local em que a consulta é salva.SAVED_QUERY_NAME
: o nome da consulta em que a consulta é salva no BigQuery.
Transmitir parâmetros baseados em struct
Para transmitir uma estrutura como parâmetro com o nome do campo, o tipo
de campo e o valor do campo da estrutura, use o método SET_QUERY_PARAMETERS
da 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.
Substitua:
PARAMETER_NAME
: o nome do parâmetro definido na consulta salva como parâmetro nomeado.STRUCT_FIELD_NAME
: o nome do campo da estrutura.STRUCT_FIELD_TYPE
: o tipo de dados de struct válido.STRUCT_FIELD_VALUE
: o valor do campo de estrutura na forma de string.CLIENT_KEY
: a chave de cliente configurada para autenticação em Google Cloud durante a configuração de autenticação.QUERY_LOCATION_ID
: o Google Cloud local em que a consulta é salva.SAVED_QUERY_NAME
: o nome da consulta em que a consulta é salva no BigQuery.
Receber texto da consulta
Para buscar o texto de uma consulta salva no BigQuery, use
o método GET_QUERY_TEXT
da 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.
Substitua:
CLIENT_KEY
: a chave de cliente configurada para autenticação em Google Cloud durante a configuração de autenticação.QUERY_LOCATION_ID
: o Google Cloud local em que a consulta é salva.SAVED_QUERY_NAME
: o nome da consulta em que a consulta é salva no BigQuery.
LV_QUERY_TEXT
mantém a consulta mantida em relação ao SAVED_QUERY_NAME
.
Receber parâmetros de consulta
Para buscar os parâmetros de consulta definidos pelo método SET_QUERY_PARAMETERS
do SDK,
use o método GET_QUERY_PARAMETERS
da 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.
Substitua:
PARAMETER_NAME
: o nome do parâmetro definido na consulta salva como parâmetro nomeado.PARAMETER_TYPE
: o tipo de dados válido do parâmetro.PARAMETER_VALUE
: o valor no formato de uma string.CLIENT_KEY
: a chave de cliente configurada para autenticação em Google Cloud durante a configuração de autenticação.QUERY_LOCATION_ID
: o Google Cloud local em que a consulta é salva.SAVED_QUERY_NAME
: o nome da consulta em que a consulta é salva no BigQuery.
LT_PARAMETERS
armazena os parâmetros de consulta definidos para o SAVED_QUERY_NAME
.