Pular para o conteúdo principal

detecção de anomalia

info

Beta

Esse recurso está na versão beta.

Esta página descreve o que é detecção de anomalia, o que ela monitora e como usá-la.

Para fornecer feedback sobre a detecção de anomalias, email lakehouse-monitoring-feedback@databricks.com.

O que é detecção de anomalia?

Com o lakehouse monitoramento detecção de anomalia, o senhor pode monitorar facilmente a qualidade dos dados de todas as tabelas em um esquema. A Databricks aproveita a inteligência de dados para avaliar automaticamente a qualidade dos dados, avaliando especificamente a atualidade e a integridade de cada tabela. As percepções de qualidade são preenchidas em indicadores de saúde para que os consumidores possam entender a saúde em um piscar de olhos. Os proprietários de dados têm acesso a tabelas de registro e painéis para que possam identificar rapidamente, definir alertas e resolver anomalias em um esquema inteiro.

A detecção de anomalia não modifica nenhuma tabela que monitora, nem adiciona sobrecarga a nenhum trabalho que preenche essas tabelas.

Requisitos

  • Workspace habilitado para o Unity Catalog.
  • sem servidor compute ativado. Para obter instruções, consulte Conectar-se a serverless compute .
  • Para ativar a detecção de anomalia em um esquema, o senhor deve ter privilégios de gerenciar SCHEMA ou gerenciar CATALOG no esquema do catálogo.

Como funciona a detecção de anomalia?

A Databricks monitora as tabelas ativadas para verificar se estão atualizadas e completas .

Frescura se refere ao quão recentemente uma tabela foi atualizada. A detecção de anomalia analisa a história do commit em uma tabela e cria um modelo por tabela para prever a hora do próximo commit. Se um commit for excepcionalmente tardio, a tabela será marcada como obsoleta. Para tabelas de séries temporais, você pode especificar colunas de horário do evento. A detecção de anomalias detecta se a latência de ingestão dos dados, definida como a diferença entre o tempo de commit e o tempo do evento, é excepcionalmente alta.

A integridade se refere ao número de linhas que se espera que sejam gravadas na tabela nas últimas 24 horas. A detecção de anomalia analisa a contagem histórica de linhas e, com base nesses dados, prevê um intervalo do número esperado de linhas. Se o número de linhas confirmadas nas últimas 24 horas for menor que o limite inferior desse intervalo, uma tabela será marcada como incompleta.

Habilitar a detecção de anomalias em um esquema

Para ativar a detecção de anomalias em um esquema, navegue até o esquema em Unity Catalog.

  1. Na página do esquema, clique em Details (Detalhes ) tab.

    Detalhes tab para a página do esquema no Catalog Explorer.

  2. Clique no botão de detecção de anomalia para ativá-lo.

    detecção de anomalia seletor ativado.

  3. Um trabalho agendado para Databricks é iniciado para verificar o esquema. Para a primeira execução do Job, Databricks também executa detecção de anomalia em dados históricos ("backtesting") para verificar a qualidade de suas tabelas como se a detecção de anomalia tivesse sido ativada em seu esquema há duas semanas. Esses resultados são registrados na tabela de logs.

  4. Em default, o trabalho é executado a cada 6 horas. Para alterar essa configuração, consulte Definir parâmetros para avaliação de atualização e integridade.

  5. Para view o progresso do trabalho ou para configurá-lo, clique no ícone de engrenagem ícone de engrenagem ao lado do botão de alternância. Na caixa de diálogo exibida, clique em visualizar detalhes .

    detecção de anomalia scan dialog.

  6. Quando o trabalho for concluído, o senhor verá o registro das anomalias detectadas na tabela de registro de saída com percepções preenchidas no Dashboard de detecção de anomalia. O senhor pode acessar o painel a qualquer momento clicando em Ver resultados ao lado do botão de detecção de anomalia.

detecção de anomalia dashboard

A primeira execução de detecção de anomalia cria um painel para resumir os resultados e as tendências derivadas da tabela de registro. A execução do trabalho exibe um botão que o senhor pode usar para acessar o painel. O painel é preenchido automaticamente com percepções para o esquema digitalizado. Um único painel é criado por workspace no seguinte caminho: /Shared/Databricks Anomaly Detection/Anomaly Detection.

Visão geral da qualidade

A Visão geral da qualidade tab mostra um resumo do status de qualidade mais recente das tabelas em seu esquema com base na avaliação de detecção de anomalia mais recente.

Para começar, o senhor deve inserir a tabela de registro do esquema que deseja analisar para preencher o painel.

A seção superior do painel mostra uma visão geral dos resultados da verificação.

resumo do esquema de detecção de anomalia em Quality Overview tab do Dashboard de detecção de anomalia.

A seção Detalhamento das verificações de qualidade mostra os detalhes das verificações de frescor e integridade, juntamente com gráficos dos resultados ao longo do tempo.

detecção de anomalia resumo do detalhamento da verificação de qualidade na Visão Geral da Qualidade tab do Dashboard de detecção de anomalia.

Abaixo do resumo há uma tabela de resultados de detecção de anomalia da execução mais recente, juntamente com uma tabela de tabelas estáticas identificadas que não são atualizadas há muito tempo. Somente a tabela de incidentes recentes é mostrada aqui.

Tabela de Incidentes recentes e tabelas estáticas na Visão geral da qualidade tab do Dashboard de detecção de anomalia.

Detalhes da qualidade da tabela

O Table Quality Details tab permite que o senhor se aprofunde nas tendências e analise tabelas específicas do seu esquema. Novamente, insira o nome da tabela de registro que corresponde ao esquema em que sua tabela está e selecione sua tabela no menu suspenso. Opcionalmente, defina a janela evaluated_at para mostrar apenas os resultados da detecção de anomalia desse período de tempo.

Em uma tabela, o site tab mostra resumos de cada verificação de qualidade da tabela, com gráficos de valores previstos e observados em cada registro de data e hora da avaliação. O gráfico graficar os resultados a partir de duas semanas antes de sua primeira detecção de anomalia execução.

Verificação de frescor na tabela Visão geral Detalhes tab do painel de detecção de anomalia.

Verificação de frescor na tabela Visão geral Detalhes tab do painel de detecção de anomalia.

Verificação de integridade dos detalhes da visão geral da tabela tab do painel de detecção de anomalia.

visualizar indicadores de saúde

A detecção de anomalia fornece aos consumidores de dados uma rápida confirmação visual da atualização dos dados das tabelas que eles usam.

Na página do esquema, em Overview (Visão geral) tab, as tabelas que passaram na verificação de atualização mais recente são marcadas com um ponto verde. As tabelas que falharam na verificação são mostradas com um ponto laranja.

Página de visão geral do esquema no Catalog Explorer mostrando tabelas com nota de qualidade aprovada.

Clique no ponto para ver a hora e o status da verificação mais recente.

Pop-up mostrando detalhes sobre o estado de saúde.

Como proprietário dos dados, você pode avaliar facilmente a integridade geral do seu esquema classificando as tabelas com base na qualidade. Use o menu Classificar no canto superior direito da lista de tabelas para classificar as tabelas por qualidade.

Na página da tabela, em Overview tab, um indicador de qualidade mostra o status da tabela e lista todas as anomalias identificadas na varredura mais recente.

Indicador de qualidade saudável na página da tabela no Catalog Explorer.

Configurar alerta

Para configurar um alerta Databricks SQL na tabela de resultados de saída, siga estas etapas na UI do alertaDatabricks.

  1. Configure a consulta para o alerta:

    SQL
    WITH rounded_data AS (
    SELECT
    DATE_TRUNC('HOUR', evaluated_at) AS evaluated_at,
    CONCAT(catalog, ".", schema, ".", table_name) as full_table_name,
    table_name,
    status,
    MAX(downstream_impact.num_queries_on_affected_tables) AS impacted_queries,
    MAX(CASE WHEN quality_check_type = 'Freshness' AND additional_debug_info.commit_staleness.expectation IS NOT NULL
    THEN additional_debug_info.commit_staleness.expectation END) AS commit_expected,
    MAX(CASE WHEN quality_check_type = 'Freshness' AND additional_debug_info.commit_staleness.actual_value IS NOT NULL
    THEN additional_debug_info.commit_staleness.actual_value END) AS commit_actual,
    MAX(CASE WHEN quality_check_type = 'Freshness' AND additional_debug_info.event_staleness.expectation IS NOT NULL
    THEN additional_debug_info.event_staleness.expectation END) AS event_expected,
    MAX(CASE WHEN quality_check_type = 'Freshness' AND additional_debug_info.event_staleness.actual_value IS NOT NULL
    THEN additional_debug_info.event_staleness.actual_value END) AS event_actual,
    MAX(CASE WHEN quality_check_type = 'Completeness' AND additional_debug_info.daily_row_count.expectation IS NOT NULL
    THEN additional_debug_info.daily_row_count.expectation END) AS completeness_expected,
    MAX(CASE WHEN quality_check_type = 'Completeness' AND additional_debug_info.daily_row_count.actual_value IS NOT NULL
    THEN additional_debug_info.daily_row_count.actual_value END) AS completeness_actual
    FROM <catalog>.<schema>._quality_monitoring_summary
    GROUP BY ALL
    )
    SELECT
    evaluated_at,
    full_table_name,
    status,
    commit_expected,
    commit_actual,
    event_expected,
    event_actual,
    completeness_expected,
    completeness_actual,
    impacted_queries,
    CONCAT("<link-to-dashboard>&f_table-quality-details~table-quality-details-logging-table-name=<catalog>.<schema>._quality_monitoring_summary&f_table-quality-details~9d146eba=", table_name) AS dash_link
    FROM rounded_data
    WHERE
    evaluated_at >= current_timestamp() - INTERVAL 6 HOUR AND
    -- enter the minimum number of table violations before the alert is triggered
    impacted_queries > <min-tables-affected> AND
    status = "Unhealthy"
  2. Configure a condição de alerta:

    Configurar a condição do gatilho

  3. Personalize o email padrão:

    Html
    <h4>The following tables are failing quality checks in the last 6 hours</h4>

    <table>
    <tr>
    <td>
    <table>
    <tr>
    <th>Table</th>
    <th>Expected Staleness</th>
    <th>Actual Staleness</th>
    <th>Expected Row Volume</th>
    <th>Actual Row Volume</th>
    <th>Impact (queries)</th>
    </tr>

    {<a id='QUERY_RESULT_ROWS'/>}
    <tr>
    <td><a href="{{dash_link}}">{{full_table_name}}</a></td>
    <td>{{commit_expected}}</td>
    <td>{{commit_actual}}</td>
    <td>{{completeness_expected}}</td>
    <td>{{completeness_actual}}</td>
    <td>{{impacted_queries}}</td>
    </tr>

    {{/QUERY_RESULT_ROWS}}
    </table>
    </td>
    </tr>
    </table>

Agora, o senhor tem um alerta que é acionado com base no impacto downstream do problema de qualidade e apresenta um link para o painel que o ajuda a depurar a tabela que acionou o alerta.

Desativar a detecção de anomalia

Para desativar a detecção de anomalia, clique no botão de detecção de anomalia para desativá-la. O Job de detecção de anomalia será excluído, todas as tabelas e informações de detecção de anomalia serão excluídas.

detecção de anomalia seletor desativado.

Limitação

detecção de anomalia não suporta o seguinte:

  • visualização, visualização materializada ou tabelas de transmissão.
  • A determinação da integridade não leva em conta account métricas como a fração de nulos, valores zero ou NaN.
  • Indicadores de saúde para completude
  • " Backtesting " para verificar se há frescor ou integridade com base em eventos

Avançado

Revisão dos resultados dos registros

Em default, os resultados de uma varredura de detecção de anomalia são salvos no esquema em uma tabela chamada _quality_monitoring_summary, à qual somente o usuário que ativou a detecção de anomalia tem acesso. Para configurar o nome ou a localização da tabela de registro, consulte Definir parâmetros para avaliação de atualização e integridade.

A tabela tem as seguintes informações:

Nome da coluna

Tipo

Descrição

evaluated_at

carimbo de data/hora

começar o tempo de execução da varredura de anomalias.

catalog

string

Catálogo que contém o esquema no qual a varredura de anomalias foi executada.

schema

string

Esquema no qual a varredura de anomalias foi executada.

table_name

string

Nome da tabela digitalizada.

quality_check_type

string

Freshness ou Completeness

status

string

Resultado da verificação de qualidade. Um dos Healthy, Unhealthy ou Unknown. Se o resultado for Unknown, consulte error_message para obter mais detalhes.

additional_debug_info

map

Esse campo fornece os valores que foram usados para determinar o status da tabela. Para obter detalhes, consulte informações sobre depuração.

error_message

string

Se status for Unknown, informações adicionais aparecerão aqui para ajudar na depuração.

table_lineage_link

string

Link para a linhagem da tabela tab no Catalog Explorer, para ajudar a investigar a causa raiz de uma tabela Unhealthy.

downstream_impact

struct

Impacto de uma anomalia no ativo downstream. Para obter detalhes, consulte Informações sobre o impacto downstream.

depuração informações

Na tabela de resultados de registros, a coluna additional_debug_info fornece informações no seguinte formato:

Bash
[
<metric_name>:
actual_value: <value> ,
expectation: “actual value < [predicted_value]
is_violated: true/false,
error_code: <error_code>
from_backtesting: true/false
...
]

Por exemplo:

JSON
{
commit_staleness:
actual_value: "31 min"
expectation: "actual_value < 1 day"
is_violated: "false"
error_code: "None"
from_backtesting: "false"
}

Informações sobre o impacto downstream

Na tabela de resultados de registros, a coluna downstream_impact é uma struct com os seguintes campos:

campo

Tipo

Descrição

impact_level

int

Valor inteiro entre 1 e 4 indicando a gravidade da anomalia. Valores mais altos indicam maior interrupção.

num_downstream_tables

int

Número de tabelas downstream que podem ser afetadas pela anomalia.

num_queries_on_affected_tables

int

Número total de consultas que fizeram referência às tabelas afetadas e downstream nos últimos 30 dias.

Defina parâmetros para avaliação de frescor e integridade

Para editar os parâmetros que controlam o trabalho de detecção de anomalia, como a frequência de execução do trabalho ou o nome da tabela de resultados de logs, o senhor deve editar os parâmetros do trabalho na tarefa tab da página do trabalho.

Página de empregos mostrando a detecção de anomalia Job.

As seções a seguir descrevem configurações específicas. Para obter informações sobre como definir os parâmetros de tarefa, consulte Configurar parâmetros de tarefa.

programação e notificações

Para personalizar o programar para o trabalho de detecção de anomalia ou para configurar notificações, use as configurações do programar & Triggers na página do trabalho. Consulte Automatização de trabalhos com programas e acionadores.

Nome da tabela de registro

Para alterar o nome da tabela de registro ou salvar a tabela em um esquema diferente, edite o parâmetro logging_table_name da tarefa Job e especifique o nome desejado. Para salvar a tabela de registro em um esquema diferente, especifique o nome completo de 3 níveis.

Personalize as avaliações freshness e completeness

Todos os parâmetros desta seção são opcionais. Em default, a detecção de anomalia determina o limite com base em uma análise do histórico da tabela.

Esses parâmetros são campos dentro do parâmetro de tarefa metric_configs. O formato de metric_configs é uma cadeia de caracteres JSON com os seguintes valores default:

JSON
[
{
"disable_check": false,
"tables_to_skip": null,
"tables_to_scan": null,
"table_threshold_overrides": null,
"table_latency_threshold_overrides": null,
"static_table_threshold_override": null,
"event_timestamp_col_names": null,
"metric_type": "FreshnessConfig"
},
{
"disable_check": true,
"tables_to_skip": null,
"tables_to_scan": null,
"table_threshold_overrides": null,
"metric_type": "CompletenessConfig"
}
]

Os parâmetros a seguir podem ser usados para as avaliações freshness e completeness.

Nome do campo

Descrição

Exemplo

tables_to_scan

Apenas as tabelas especificadas são examinadas para detecção de anomalias.

["table_to_scan", "another_table_to_scan"]

tables_to_skip

As tabelas especificadas são ignoradas durante a varredura de detecção de anomalia.

["table_to_skip"]

disable_check

A varredura de anomalias não é executada. Use esse parâmetro se quiser desativar somente o escaneamento freshness ou somente o escaneamento completeness.

true, false

Os parâmetros a seguir se aplicam somente à avaliação freshness:

Nome do campo

Descrição

Exemplo

event_timestamp_col_names

Lista de colunas de carimbo de data/hora que as tabelas em seu esquema podem ter. Se uma tabela tiver uma dessas colunas, ela será marcada como Unhealthy se o valor máximo dessa coluna for excedido. O uso desse parâmetro pode aumentar o tempo e o custo da avaliação.

["timestamp", "date"]

table_threshold_overrides

Um dicionário composto por nomes de tabelas e limites (em segundos) que especificam o intervalo máximo desde a última atualização da tabela antes de marcar uma tabela como Unhealthy.

{"table_0": 86400}

table_latency_threshold_overrides

Um dicionário que consiste em nomes de tabelas e limites de latência (em segundos) que especificam o intervalo máximo desde o último registro de data e hora na tabela antes de marcar uma tabela como Unhealthy.

{"table_1": 3600}

static_table_threshold_override

Quantidade de tempo (em segundos) antes de uma tabela ser considerada estática (ou seja, uma que não está mais atualizada).

2592000

O parâmetro a seguir se aplica somente à avaliação completeness:

Nome do campo

Descrição

Exemplo

table_threshold_overrides

Um dicionário que consiste em nomes de tabelas e limites de volume de linhas (especificados como números inteiros). Se o número de linhas adicionadas a uma tabela nas últimas 24 horas for menor que o limite especificado, a tabela será marcada como Unhealthy.

{"table_0": 1000}