test

Utilisation

test: historic_revenue_is_accurate {
  explore_source:  orders {
    column:  total_revenue {
      field:  orders.total_revenue 
    }
    filters: [orders.created_date:  "2017"]
  }
  assert:  revenue_is_expected_value {
    expression: ${orders.total_revenue} = 626000 ;;
  }
}
Hiérarchie
test

- ou -

test

- ou -

test
Valeur par défaut
Aucun

Acceptation
Identifiant du test de données, ainsi que les sous-paramètres définissant les assertions et la requête du test.

Définition

Looker propose un programme de validation LookML pour vérifier que votre code LookML est syntaxiquement valide et un outil de validation de contenu pour vérifier les références d'objets entre votre contenu et votre modèle.

En plus de ces validateurs, le paramètre test vous permet de valider la logique de votre modèle. Pour chaque test de données, vous créez une requête et une instruction d'assertion yesno. Le test de données exécute la requête de test et vérifie que l'assertion est vraie pour chaque ligne de la requête de test. Si l'instruction d'assertion renvoie yes pour chaque ligne de la requête de test, le test de données est réussi.

Si les paramètres de votre projet sont configurés pour exiger la réussite des tests de données avant le déploiement en production et si votre projet comporte un ou plusieurs paramètres test, l'IDE affichera le bouton Exécuter les tests après que vous aurez validé les modifications apportées au projet. Les développeurs LookML doivent exécuter les tests de données avant de déployer les modifications en production.

Que votre projet nécessite ou non des tests de données avant d'être déployé en production, un développeur LookML en mode Développement peut exécuter des tests de données à tout moment pour vérifier la logique du modèle.

Vous pouvez créer des tests de données dans des fichiers de modèle, des fichiers de vue ou dans des fichiers de test de données distincts et dédiés. Lorsque vous utilisez un fichier dédié pour héberger vos tests de données, n'oubliez pas d'include le fichier de test de données dans tout fichier de modèle ou fichier de vue dans lequel vous souhaitez exécuter vos tests de données.

Un test de données ne peut pas porter le même nom ni avoir le même explore_source qu'un autre test de données du même projet. Si vous utilisez le même explore_source pour plusieurs tests de données dans votre projet, assurez-vous que les noms des tests de données sont tous uniques.

Le paramètre test comporte les sous-paramètres suivants :

  • explore_source : définit la requête à utiliser dans le test de données.
  • assert : définit une expression Looker qui est exécutée sur chaque ligne de la requête de test pour valider les données.

Une fois que vous avez défini le LookML pour votre test, vous pouvez exécuter le test de données pour vérifier qu'il fonctionne correctement et voir si la logique de votre modèle réussit le test (vous devez être en mode Développement pour exécuter des tests de données).

Il existe plusieurs façons de lancer des tests de données pour un projet :

  1. Si les paramètres de votre projet sont configurés pour exiger la réussite des tests de données avant de déployer vos fichiers en production, l'IDE affichera le bouton Exécuter les tests après que vous aurez validé les modifications apportées au projet. Tous les tests de votre projet seront exécutés, quel que soit le fichier qui les définit. Vous devez réussir les tests de données avant de pouvoir déployer vos modifications en production.
  2. Dans le panneau État du projet, sélectionnez le bouton Exécuter des tests de données. Tous les tests de données de votre projet seront exécutés, quel que soit le fichier qui définit le test.
  3. Sélectionnez l'option Exécuter les tests LookML dans le menu du fichier. Seuls les tests définis dans le fichier actuel seront exécutés.

Une fois les tests de données exécutés, le panneau État du projet affiche la progression et les résultats.

Vous pouvez sélectionner le lien Explorer la requête pour chaque résultat de test afin d'ouvrir une exploration avec la requête définie dans le test de données.

explore_source

Le paramètre explore_source d'un test de données utilise la même syntaxe et la même logique que le paramètre explore_source d'une table dérivée. La seule différence est que le explore_source d'un test de données n'est pas compatible avec les sous-paramètres derived_column, bind_filters et bind_all_filters.

Conseil pratique : Pour obtenir facilement le code LookML explore_source, utilisez une exploration existante pour créer votre requête. Dans l'explorateur, sélectionnez Obtenir le LookML dans le menu en forme de roue dentée, puis sélectionnez l'onglet Table dérivée pour obtenir le LookML de la requête. Pour en savoir plus, consultez la documentation sur la création de tables dérivées natives.

Notez les points suivants pour le explore_source d'un test de données :

  • La requête explore_source d'un test de données est une requête Looker standard, ce qui signifie que la requête explore_source du test est limitée à 5 000 lignes. Assurez-vous que votre requête ne dépasse pas 5 000 lignes afin d'obtenir un ensemble de résultats complet à tester. Vous pouvez intégrer des filtres ou un tri dans votre explore_source pour réduire le nombre de lignes dans votre requête ou pour placer les lignes pertinentes en haut de la requête.

  • Un explore avec extension: required ne peut pas être utilisé comme explore_source pour un test de données. Le validateur LookML génère une erreur indiquant que explore_source est introuvable.

assert

Le sous-paramètre assert définit les critères selon lesquels le résultat de la requête explore_source est considéré comme valide. Le sous-paramètre expression accepte une expression Looker qui génère une valeur yesno (booléenne). Une fois la requête explore_source exécutée, l'expression de l'assertion est évaluée pour chaque ligne de l'ensemble de résultats de la requête. Si une réponse no est renvoyée pour une ligne de la requête, le test de données échoue. Si la requête elle-même comporte des erreurs, le test échoue également.

Un test peut comporter plusieurs déclarations assert. Pour que le test réussisse, chaque assertion doit être vraie pour chaque ligne de la requête explore_source.

Conseil pratique : Vous pouvez utiliser la boîte de dialogue Calculs de tables pour tester la syntaxe des expressions Looker à utiliser dans le paramètre expression de votre test.

Pour être utilisés dans les tests de données, les champs de l'expression Looker doivent être entièrement définis, c'est-à-dire spécifiés au format view_name.field_name. Par exemple, l'expression suivante déclare le champ comme aircraft_engine_types.aircraft_engine_type_id :

assert: engine_type_id_not_null {
  expression: NOT is_null(${aircraft_engine_types.aircraft_engine_type_id}) ;;
}

Exemples

S'assurer qu'une clé primaire est unique

Le test de données suivant crée une requête à partir de l'exploration orders et définit un expression pour vérifier que les ID de commande sont uniques dans l'ensemble de résultats. La requête explore_source crée un nombre de lignes associées à chaque ID de la base de données. Si l'ID est unique, la base de données ne doit comporter qu'une seule ligne pour un ID. De plus, elle trie les résultats en fonction du nombre et limite l'ensemble de résultats à une seule ligne. La réponse à la requête sera donc l'ID avec le nombre le plus élevé. Si un ID a un nombre supérieur à 1, nous savons qu'il existe plusieurs lignes pour cet ID et qu'il n'est donc pas unique. Dans ce cas, ce test de données échouera.

test: order_id_is_unique {
  explore_source: orders {
    column: id {}
    column: count {}
    sorts: [orders.count: desc]
    limit: 1
  }
  assert: order_id_is_unique {
    expression: ${orders.count} = 1 ;;
  }

Vérifier une valeur connue

Le prochain test de données vérifie que la valeur des revenus de 2017 est toujours de 626 000 $. Dans cet ensemble de données, il s'agit d'une valeur connue qui ne devrait jamais changer.

test: historic_revenue_is_accurate {
  explore_source: orders {
    column: total_revenue {
      field: orders.total_revenue
    }
    filters: [orders.created_date: "2017"]
  }
  assert: revenue_is_expected_value {
    expression: ${orders.total_revenue} = 626000 ;;
  }
}

Confirmation de l'absence de valeurs nulles

Le test de données suivant vérifie qu'il n'y a pas de valeurs nulles dans les données. Ce explore_source utilise un sort pour s'assurer que toutes les valeurs nulles seront renvoyées en haut de la requête. Le tri des valeurs nulles peut varier en fonction de votre dialecte. Le test suivant utilise desc: yes comme exemple.


test: status_is_not_null {
  explore_source: orders {
    column: status {}
    sorts: [orders.status: desc]
    limit: 1
  }
  assert: status_is_not_null {
    expression: NOT is_null(${orders.status}) ;;
  }
}