Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esta página descreve como criar uma métrica personalizada na criação de perfil de dados. Além das estatísticas de análise e desvio calculadas automaticamente, você pode criar métricas personalizadas. Por exemplo, talvez você queira acompanhar uma média ponderada que capture algum aspecto da lógica de negócios ou use uma pontuação de qualidade de modelo personalizado. Você também pode criar métricas de descompasso personalizadas que acompanham as alterações nos valores na 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 MonitorMetric API, consulte a referência de API.
Tipos de métricas personalizadas
A criação de perfil de dados inclui os seguintes tipos de métricas personalizadas:
- Métricas de agregação, que são calculadas com base em colunas na tabela primária. As métricas de agregação são armazenadas na tabela de métricas de perfil.
- Métricas derivadas, que são calculadas com base em métricas de agregação computadas anteriormente e não usam diretamente dados da tabela primária. As métricas derivadas são armazenadas na tabela de métricas de perfil.
- Métricas de descompasso, que comparam métricas agregadas ou derivadas anteriormente de duas janelas de tempo diferentes ou entre a tabela primária e a tabela de linha de base. As métricas de descompasso são armazenadas na tabela de métricas de descompasso.
O uso de métricas derivadas e de desvio quando possível minimiza a recomputação sobre a tabela principal completa. Somente as métricas de agregação acessam dados da tabela primária. As métricas derivadas e desviadas podem ser computadas diretamente dos valores métricos agregados.
Parâmetros de métricas personalizadas
Para definir uma métrica personalizada, crie um modelo Jinja para uma expressão de coluna SQL. As tabelas nesta seção descrevem os parâmetros que definem a métrica e os parâmetros usados no modelo Jinja.
| Parâmetro | Descrição |
|---|---|
type |
Uma opção entre MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE, MonitorMetricType.CUSTOM_METRIC_TYPE_DERIVED ou MonitorMetricType.CUSTOM_METRIC_TYPE_DRIFT. |
name |
Nome da coluna para a métrica personalizada em tabelas de métricas. |
input_columns |
Lista de nomes de coluna na tabela de entrada para a qual a métrica deve ser computada. Para indicar que mais de uma coluna é usada no cálculo, use :table. Veja os exemplos neste artigo. |
definition |
Modelo jinja para uma expressão SQL que especifica como calcular a métrica. Consulte Criar definição. |
output_data_type |
Tipo de dados Spark da saída da métrica em um formato de string JSON. |
Criar definition
O definition parâmetro deve ser uma única expressão de cadeia de caracteres na forma de um modelo Jinja. Ele não pode conter junções ou subconsultas.
A tabela a seguir lista os parâmetros que você pode usar para criar um Modelo de Jinja do SQL para especificar como calcular a métrica.
| Parâmetro | Descrição |
|---|---|
{{input_column}} |
Coluna usada para calcular a métrica personalizada. |
{{prediction_col}} |
Coluna que contém previsões de modelo de aprendizado de máquina. Usado com a análise InferenceLog. |
{{label_col}} |
Coluna que contém rótulos de referência do modelo de ML. Usado com a análise InferenceLog. |
{{current_df}} |
Para desvio em comparação com a janela de tempo anterior. Dados da janela de tempo anterior. |
{{base_df}} |
Para desvio em comparação com a tabela de linha de base. Dados de linha de base. |
Exemplo de métrica de agregação
O exemplo a seguir calcula a média do quadrado dos valores em uma coluna e é aplicado a 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 de coluna 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 colunas f1 e f2. Este exemplo mostra o uso do [":table"]input_columns parâmetro 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 critical coluna está True, uma penalidade mais pesada é atribuída quando o valor previsto para essa linha não corresponde ao valor verdadeiro. Como ela é definida nas colunas brutas (prediction e label), ela é definida como uma métrica de agregação. A :table coluna 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 pelos nomes das colunas de rótulo de previsão e verdade de base para o perfil.
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étrica derivada
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 essa é 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 de squared_avg agregação. A saída é salva como uma nova coluna na tabela de métricas de 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 descompasso que acompanha a alteração na weighted_error métrica definida anteriormente nesta seção. Os parâmetros {{current_df}} e {{base_df}} permitem que a métrica faça referência aos valores weighted_error da janela atual e da janela de comparação. A janela de comparação pode ser os dados de 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(),
)