Instrução CREATE MODEL para modelos somente de transformação
Este documento descreve a instrução CREATE MODEL
para criar
modelos somente de transformação no BigQuery. Os modelos somente de transformação usam a
cláusula TRANSFORM
para aplicar funções de pré-processamento
a dados de entrada e retornar os dados pré-processados. Os modelos somente de transformação separam
o pré-processamento de dados do treinamento de modelos, o que facilita a captura e a
reutilização de um conjunto de regras de pré-processamento de dados.
É possível usar um modelo somente de transformação com a
função ML.TRANSFORM
para fornecer dados pré-processados a outros modelos:
- É possível usá-lo na instrução de consulta ao criar outro modelo, usando os dados transformados como os dados de treinamento para esse modelo.
- É possível usá-lo no
argumento
query statement
da funçãoML.PREDICT
a fim de fornecer dados para previsão que são processadas da maneira esperada pelo modelo de destino.
Para transformações de atributos em lote, é melhor usar modelos somente de transformação, porque você pode processar grandes quantidades de dados em um curto período. Para transformações de atributos on-line, é melhor usar o Vertex AI Feature Store, porque ele fornece respostas com baixa latência.
Também é possível usar um modelo somente de transformação com a
função ML.FEATURE_INFO
para retornar informações sobre as transformações de atributos no modelo.
Para informações sobre as funções e instruções SQL com suporte em cada tipo de modelo, consulte Jornada do usuário completa de cada modelo.
Sintaxe de CREATE MODEL
{CREATE MODEL | CREATE MODEL IF NOT EXISTS | CREATE OR REPLACE MODEL} model_name TRANSFORM (select_list) OPTIONS(MODEL_TYPE = 'TRANSFORM_ONLY') AS query_statement
CREATE MODEL
Cria e treina um modelo novo no conjunto de dados especificado. Se o nome do modelo
existir, CREATE MODEL
retornará um erro.
CREATE MODEL IF NOT EXISTS
Cria e treina um novo modelo somente quando ele não existe no conjunto de dados especificado.
CREATE OR REPLACE MODEL
Cria e treina um modelo e substitui um modelo atual com o mesmo nome no conjunto de dados especificado.
model_name
O nome do modelo que você está criando ou substituindo. O nome do modelo precisa ser exclusivo no conjunto de dados: nenhum outro modelo ou tabela pode ter o mesmo nome. O nome do modelo precisa seguir as mesmas regras de nomenclatura de uma tabela do BigQuery. Um nome de modelo pode:
- conter até 1.024 caracteres;
- conter letras (maiúsculas e minúsculas), números e sublinhados;
model_name
não diferencia maiúsculas de minúsculas.
Se você não tiver um projeto padrão configurado, use o ID do projeto como prefixo no nome do modelo no seguinte formato, incluindo acentos graves:
`[PROJECT_ID].[DATASET].[MODEL]`
Por exemplo, "myproject.mydataset.mymodel".
select_list
É possível passar colunas de query_statement
pelo treinamento de modelo sem
transformação usando *
, * EXCEPT()
ou listando
os nomes das colunas diretamente.
Nem todas as colunas de query_statement
precisam aparecer na cláusula TRANSFORM
, então é possível descartar colunas que aparecem em query_statement
omitindo-as da cláusula TRANSFORM
.
É possível transformar entradas de query_statement
usando expressões em select_list
. select_list
é semelhante a uma instrução SELECT
normal.
select_list
suporta a seguinte sintaxe:
*
* EXCEPT()
* REPLACE()
expression
expression.*
Em select_list
, não pode constar o seguinte:
- Funções de agregação.
- Funções de análise que não são do BigQuery ML. Para mais informações sobre as funções com suporte, consulte Pré-processamento manual de recursos.
- UDFs.
- Subconsultas.
- Colunas anônimas. Por exemplo,
a + b as c
é permitido, masa + b
não é.
As colunas de saída de select_list
podem ser de qualquer tipo de dados
com suporte no BigQuery.
Se presentes, as seguintes colunas precisam aparecer em select_list
sem
transformação:
label
data_split_col
kmeans_init_col
instance_weight_col
Se essas colunas forem retornadas por query_statement
, será necessário referenciá-las em
select_list
pelo nome fora de qualquer expressão ou usando *
. Não é
possível usar aliases com essas colunas.
MODEL_TYPE
Sintaxe
MODEL_TYPE = 'TRANSFORM_ONLY'
Descrição
Especifique o tipo de modelo. Esta opção é obrigatória.
query_statement
A consulta do GoogleSQL que contém os dados a serem pré-processados. As estatísticas calculadas ao transformar esses dados são aplicadas aos dados de entrada de qualquer função com que você usa o modelo.
Exemplos
Os exemplos a seguir mostram como criar e usar modelos somente de transformação.
Exemplo 1
No exemplo a seguir, você cria um modelo chamado mymodel
em mydataset
no
projeto padrão. O modelo transforma várias colunas da
tabela pública do BigQuery bigquery-public-data.ml_datasets.penguins
:
CREATE MODEL `mydataset.transform_model` TRANSFORM( species, island, ML.MAX_ABS_SCALER(culmen_length_mm) OVER () AS culmen_length_mm, ML.MAX_ABS_SCALER(culmen_depth_mm) OVER () AS culmen_depth_mm, ML.MAX_ABS_SCALER(flipper_length_mm) OVER () AS flipper_length_mm, sex, body_mass_g) OPTIONS ( model_type = 'transform_only') AS ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` );
Exemplo 2
No exemplo a seguir, você cria um modelo chamado mymodel
em mydataset
no
projeto padrão. O modelo é treinado com dados pré-processados usando
um modelo somente de transformação:
CREATE MODEL `mydataset.mymodel` OPTIONS ( MODEL_TYPE = 'LINEAR_REG', MAX_ITERATIONS = 5, INPUT_LABEL_COLS = ['body_mass_g'] ) AS SELECT * FROM ML.TRANSFORM( MODEL `mydataset.transform_model`, TABLE `bigquery-public-data.ml_datasets.penguins`) WHERE body_mass_g IS NOT NULL;