DES CAS D’USAGE D’IA À REPRENDRE.Édition française · Particuliers, indépendants, TPE
PostHog

Déboguer les contrôles de qualité des données échoués

debugging-failed-data-quality-checks

En bref

Découvre pourquoi une vérification de la qualité des données a échoué ou a échoué, regarde les lignes qu'elle correspond, et recommande la correction. Couvre également une vue matérialisée rafraîchie que la porte de qualité des données n'a pas publié. Utilisez lorsqu'on vous demande pourquoi un contrôle est rouge, quelles lignes ont échoué, pourquoi une vue montre "Pas publié", pourquoi les données d'une vue sont bloquées après un rafraîchissement, ou comment obtenir un rafraîchissement bloqué publié. Termes de déclenchement: échec de la vérification, défaillance des lignes lignes, erreur de vérification, défaut de qualité des données, non publié, matérialisation bloquée, rafraîchissement non publié, vérification continue d'échouer.

Ce que ça fait

  • Quand utiliser cette compétence
  • Outils disponibles
  • Flux de travail

Pour qui, et un exemple

Personnes dont la tâche correspond: Découvre pourquoi une vérification de la qualité des données a échoué ou a échoué, regarde les lignes qu'elle correspond et recommande la correction.

Exemple de demande : « Déboguer les contrôles de qualité des données échoués : Découvre pourquoi une vérification de la qualité des données a échoué ou a échoué, regarde les lignes qu'elle correspond, et recommande la correction. »

Découvre pourquoi une vérification de la qualité des données a échoué ou a échoué, regarde les lignes qu'elle correspond, et recommande la correction. Exemple rédigé par iadujour.fr à partir du SKILL.md, non testé.

Installer

Claude Code : /plugin marketplace add PostHog/skills, puis /plugin install posthog-all@posthog-skills (README).

/plugin marketplace add PostHog/skills
/plugin install posthog-all@posthog-skills

Fonctionne avec

  • Claude Code

Source : README : marketplace Claude Code `/plugin marketplace add PostHog/skills`. D’autres agents ne sont pas nommés.

Niveau : Intermédiaire

Suppose un projet déjà en place chez l’éditeur et les outils décrits dans le SKILL.md.

À savoir

Dépôt officiel PostHog (github.com/PostHog/skills). Skills pour l’analytique produit, les indicateurs de fonctionnalité, le suivi d’erreurs et les workflows d’équipe.

Extrait du SKILL.md

La description d’origine, celle que l’agent lit pour décider de charger la skill (en anglais) :

Finds out why a data quality check failed or errored, looks at the rows it matched, and recommends the fix. Also covers a materialized view refresh that the data quality gate did not publish. Use when asked why a check is red, what rows fai […]

Citée depuis le SKILL.md au commit 445764b .

Le SKILL.md compte 131 lignes et 5 sections principales :

  • When to use this skill
  • Available tools
  • Workflow
  • Important notes
  • Related

Licence : MIT

Consultée le 13 novembre 2026 : fichier de licence du dépôt.

La licence autorise la reprise : le texte intégral du SKILL.md est reproduit ci-dessous, sans modification, avec sa mention de licence.

Texte intégral du SKILL.md

Reproduit sans modification depuis PostHog/skills (commit 445764b) , © PostHog, sous licence MIT (fichier de licence d’origine ).

Afficher le SKILL.md original (131 lignes, en anglais)
---
name: debugging-failed-data-quality-checks
description: >
  Finds out why a data quality check failed or errored, looks at the rows it matched, and recommends
  the fix. Also covers a materialized view refresh that the data quality gate did not publish. Use
  when asked why a check is red, what rows failed, why a view shows "Not published", why a view's
  data is stale after a refresh, or how to get a blocked refresh published. Trigger terms: failed
  check, failing rows, errored check, data quality failure, not published, blocked materialization,
  unpublished refresh, check keeps failing.
---

# Debugging failed data quality checks

A check run ends in one of four states.
Read the state first, because it decides where the problem is:

| Status    | Meaning                                        | Where to look                          |
| --------- | ---------------------------------------------- | -------------------------------------- |
| `failed`  | The query ran and the assertion found bad data | The data, or the assertion itself      |
| `errored` | The query could not run, so nothing was judged | The error text (never a data problem)  |
| `skipped` | The subject is gone                            | Whether the table or view still exists |
| `passed`  | The assertion held                             | Nothing                                |

`row_count` and `freshness` checks judge `observed_value`, not `failed_row_count`.
A failed `row_count` means the count fell outside its bounds.
A failed `freshness` means the newest row is older than the limit.

## When to use this skill

- A check or a subject shows `failed` or `errored` and the user wants to know why
- The user wants to see the rows a check matched
- A materialized view's latest run shows an error that starts with `Not published:`
- A view kept serving old data after a refresh, and the data quality gate is on
- Another skill (`authoring-data-quality-checks` or `auditing-warehouse-view-health`) found a failing check or a blocked view and handed it off

## Available tools

| Tool                                 | Purpose                                                                     |
| ------------------------------------ | --------------------------------------------------------------------------- |
| `posthog:data-quality-check-results` | A check's recent runs, with `compiled_query`, `error` and the config it ran |
| `posthog:execute-sql`                | Re-run a run's `compiled_query` to see the failing rows                     |
| `posthog:data-quality-check-run`     | Run a check now                                                             |
| `posthog:data-quality-check-update`  | Fix an assertion or change its severity                                     |
| `view-get`                           | A view's definition and status                                              |
| `view-run-history`                   | A view's materialization runs and their errors                              |
| `view-run`                           | Materialize a view again                                                    |

To find the failing checks, query `system.information_schema.data_quality_checks` for `last_status IN ('failed', 'errored')`, or `system.information_schema.data_quality_health` for a subject's verdict.

## Workflow

### Step 1: Read the run

Call `posthog:data-quality-check-results` for the check.
On the newest run, read:

- `status` and `error`
- `check_config` and `check_severity`: what the run asserted, which can differ from the check today
- `compiled_query`: HogQL that selects the failing rows. For `row_count` it returns the count instead, so judge that check by `observed_value`.
- `audited_staged_refresh`: true when the run was part of a gated audit of a refresh before it was published. An errored run can carry it too, so read `status` first.

Retention clears `compiled_query` after 30 days.
For an older run, run the check again.

### Step 2: Look at the failing rows

Run `compiled_query` with `posthog:execute-sql`.
An empty `compiled_query` means there is nothing to replay: retention cleared it, or a gated run could not read the view's definition.
Look at what it matched before you report anything.
A failure means one of two things: the data is bad, or the assertion is wrong.
The rows tell you which.

When `audited_staged_refresh` is true, the query does not read the published table.
It holds the view's definition in a `WITH` clause and reads the view's source tables now.
The sources may have changed since the run, so the rows and the count can differ from the run.
A query that now returns zero rows does not prove that the refresh was clean.
Compare with `failed_row_count` on the run.

### Step 3: Read an errored run

An errored run did not judge the data.
Match the error text:

| Error text                                                          | Cause and fix                                                                                                                                                        |
| ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `The staged files could not be read, so this data was not audited.` | The gate could not reach the refresh before publish. The refresh publishes without a verdict. Run the view again.                                                    |
| `Metric checks cannot audit staged data.`                           | A metric check was part of a gated refresh. It runs on its own schedule instead.                                                                                     |
| `The check query returned no rows.`                                 | The aggregate query returned nothing. Run the check again and report it if it repeats.                                                                               |
| `A check that reads another subject needs an initiator or author…`  | An automatic run of a `custom_sql` or `relationships` check has no user to run as. A manual run works. An edit to the check's assertion makes the editor its author. |
| A HogQL or ClickHouse error                                         | A column name typo, a type mismatch, or a query that ran out of time. Fix the config, or add `lookback_hours`.                                                       |

Two messages come with `skipped`: `The subject was deleted.` and `The subject no longer resolves.`
The table or view is gone.
Delete the check or point it at the replacement.

### Step 4: Understand a blocked refresh

When the team turns on "Block materialization on failing checks", a materialized view's error-severity checks run on each refresh before it is published.
If one fails:

- The view's run shows an error that starts with `Not published:` (see `view-run-history`).
- The previous version of the view keeps serving queries.
- Downstream views in the same DAG are skipped for this run.
- The view's schedule is not paused.
  The next scheduled refresh runs the checks again.

Warn-severity checks never block a refresh.

### Step 5: Recover

Fix the cause, then prove it:

1. Fix the upstream data, or fix the assertion with `posthog:data-quality-check-update`.
   If the failure is real but must not block the refresh, change `severity` to `warn`.
2. For a blocked view, call `view-run` to materialize it again.
   Otherwise call `posthog:data-quality-check-run`.
3. Read `posthog:data-quality-check-results` again and confirm the newest run passed.

## Important notes

- Do not change a check's severity or assertion only to turn it green.
  Confirm with the user first.
- `errored` is never evidence of bad data, and `passed` on an empty table is not evidence of good data.
- A check reports against its subject, but a `custom_sql` query can read other tables.
  Read the query before you blame the subject.

## Related

- `authoring-data-quality-checks`: writing and choosing checks
- `auditing-warehouse-view-health`: finding failing materialized views
Source. Fiche rédigée par iadujour.fr à partir de : Frontmatter, sections et corps du SKILL.md, README du dépôt. Consultée le 13 novembre 2026. PostHog/skills .
MÊME ÉDITEUR

Autres skills PostHog : Observabilité et supervision

Toute la catégorie
PostHogObservabilité et supervision

Ajouter le suivi des erreurs PostHog

instrument-error-tracking

Ajouter le suivi des erreurs PostHog pour capturer et surveiller les exceptions.

Outils : Claude CodeNiveau : Avancémàj 12/11/2026
PostHogObservabilité et supervision

Ajouter PostHog AI Observability

instrument-llm-analytics

Ajouter PostHog AI Observability pour suivre l'utilisation du modèle AI.

Outils : Claude CodeNiveau : Avancémàj 12/11/2026
PostHogObservabilité et supervision

Ajouter une capture de journal PostHog

instrument-logs

Ajouter la capture de journal PostHog pour suivre les journaux d'application.

Outils : Claude CodeNiveau : Intermédiairemàj 12/11/2026
ÉCHANGES

Commentaires.

Un retour d’expérience, une question, une précision sur cette skill ? Les commentaires sont relus avant publication.

Commentaires publiés

Chargement des commentaires…

    Laisser un commentaire

    Charte de modération. Chaque commentaire est relu avant publication. Sont refusés : l’incitation à la haine, les propos injurieux ou discriminatoires, la publicité, le spam et les liens promotionnels, le hors-sujet et les données personnelles d’autrui.