Use métricas personalizadas com o Databricks lakehouse monitoring
Visualização
Esse recurso está em Public Preview.
Esta página descreve como criar uma métrica personalizada em Databricks lakehouse monitoring. Além da análise e das estatísticas de desvio calculadas automaticamente, o senhor pode criar métricas personalizadas. Por exemplo, talvez você queira rastrear uma média ponderada que capture algum aspecto da lógica de negócios ou usar um índice de qualidade de modelo personalizado. O senhor também pode criar métricas de desvio personalizadas que rastreiam as alterações nos valores da tabela primária (em comparação com a linha de base ou a janela de tempo anterior).
Para obter mais detalhes sobre como usar a API MonitorMetric
, consulte a referência da API.
Tipos de métricas personalizadas
Databricks O monitoramento da Lakehouse inclui os seguintes tipos de métricas personalizadas:
- Métricas agregadas, que são calculadas com base nas colunas da tabela primária. As métricas agregadas são armazenadas na tabela de métricas do perfil.
- Métricas derivadas, que são calculadas com base em métricas agregadas previamente calculadas e não usam diretamente os dados da tabela primária. As métricas derivadas são armazenadas na tabela de métricas do perfil.
- Métricas de desvio, que comparam métricas agregadas ou derivadas previamente computadas de duas janelas de tempo diferentes ou entre a tabela primária e a tabela de linha de base. As métricas de desvio são armazenadas na tabela de métricas de desvio.
O uso de métricas derivadas e de desvio sempre que possível minimiza a recomputação de toda a tabela primária. Somente as métricas agregadas acessam os dados da tabela primária. As métricas derivadas e de desvio podem então ser calculadas diretamente a partir dos valores métricos agregados.
Parâmetros de métricas personalizadas
Para definir uma métrica personalizada, o senhor cria um padrão Jinja para uma expressão de coluna SQL. As tabelas desta seção descrevem os parâmetros que definem as métricas e os parâmetros que são usados no padrão Jinja.
Parâmetro | Descrição |
---|---|
| Um de |
| Nome da coluna para as métricas personalizadas nas tabelas de métricas. |
| Lista de nomes de coluna na tabela de entrada para a qual as métricas devem ser computadas. Para indicar que mais de uma coluna é usada no cálculo, use |
| Jinja padrão para uma expressão SQL que especifica como compute as métricas. Consulte Criar definição. |
| Spark Tipo de dados da saída de métricas em um formato de cadeia de caracteres JSON. |
Criar definition
O parâmetro definition
deve ser uma única expressão de cadeia de caracteres na forma de um padrão Jinja. Ele não pode conter junções ou subconsultas.
A tabela a seguir lista os parâmetros que o senhor pode usar para criar um padrão SQL Jinja para especificar como calcular as métricas.
Parâmetro | Descrição |
---|---|
| Coluna usada para compute as métricas personalizadas. |
| Coluna que contém as previsões do modelo ML. Usado com a análise |
| Retenção de coluna ML modelo ground truth rótulo. Usado com a análise |
| Para desvio em comparação com a janela de tempo anterior. Dados da janela de tempo anterior. |
| Para deriva em comparação com a tabela de linha de base. Dados básicos. |
Exemplo de métricas agregadas
O exemplo a seguir calcula a média do quadrado dos valores em uma coluna e é aplicado às colunas f1
e f2
. A saída é salva como uma nova coluna na tabela de métricas de perfil e é mostrada nas linhas de análise correspondentes às colunas f1
e f2
. Os nomes das colunas aplicáveis são substituídos pelo parâmetro Jinja {{input_column}}
.
from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T
MonitorMetric(
type=MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE,
name="squared_avg",
input_columns=["f1", "f2"],
definition="avg(`{{input_column}}`*`{{input_column}}`)",
output_data_type=T.StructField("output", T.DoubleType()).json(),
)
O código a seguir define uma métrica personalizada que calcula a média da diferença entre as colunas f1
e f2
. Esse exemplo mostra o uso de [":table"]
no parâmetro input_columns
para indicar que mais de uma coluna da tabela é usada no cálculo.
from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T
MonitorMetric(
type=MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE,
name="avg_diff_f1_f2",
input_columns=[":table"],
definition="avg(f1 - f2)",
output_data_type=T.StructField("output", T.DoubleType()).json(),
)
Este exemplo calcula uma pontuação de qualidade de modelo ponderada. Para observações em que a coluna critical
é True
, uma penalidade mais pesada é atribuída quando o valor previsto para essa linha não corresponde à verdade fundamental. Como ela é definida nas colunas brutas (prediction
e label
), é definida como uma métrica agregada. A coluna :table
indica que essa métrica é calculada a partir de várias colunas. Os parâmetros Jinja {{prediction_col}}
e {{label_col}}
são substituídos pelo nome das colunas de rótulo da previsão e da verdade básica do monitor.
from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T
MonitorMetric(
type=MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE,
name="weighted_error",
input_columns=[":table"],
definition="""avg(CASE
WHEN {{prediction_col}} = {{label_col}} THEN 0
WHEN {{prediction_col}} != {{label_col}} AND critical=TRUE THEN 2
ELSE 1 END)""",
output_data_type=T.StructField("output", T.DoubleType()).json(),
)
Exemplo de métricas derivadas
O código a seguir define uma métrica personalizada que calcula a raiz quadrada da squared_avg
métrica definida anteriormente nesta seção. Como se trata de uma métrica derivada, ela não faz referência aos dados da tabela primária e, em vez disso, é definida em termos da métrica agregada squared_avg
. A saída é salva como uma nova coluna na tabela de métricas do perfil.
from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T
MonitorMetric(
type=MonitorMetricType.CUSTOM_METRIC_TYPE_DERIVED,
name="root_mean_square",
input_columns=["f1", "f2"],
definition="sqrt(squared_avg)",
output_data_type=T.StructField("output", T.DoubleType()).json(),
)
Exemplo de métricas de desvio
O código a seguir define uma métrica de desvio que rastreia a alteração na weighted_error
métrica definida anteriormente nesta seção. Os parâmetros {{current_df}}
e {{base_df}}
permitem que as métricas façam referência aos valores weighted_error
da janela atual e da janela de comparação. A janela de comparação pode ser os dados da linha de base ou os dados da janela de tempo anterior. As métricas de desvio são salvas na tabela de métricas de desvio.
from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T
MonitorMetric(
type=MonitorMetricType.CUSTOM_METRIC_TYPE_DRIFT,
name="error_rate_delta",
input_columns=[":table"],
definition="{{current_df}}.weighted_error - {{base_df}}.weighted_error",
output_data_type=T.StructField("output", T.DoubleType()).json(),
)