Pourquoi ma requête secondaire de résultats fusionnés contient-elle des valeurs nulles ?

La fonctionnalité Résultats fusionnés est une fonctionnalité pratique qui permet de combiner rapidement des données provenant de différentes explorations, sans avoir à développer en LookML. Les résultats fusionnés effectuent efficacement une jointure gauche entre la requête principale et les requêtes secondaires. Cela signifie que les noms des champs, les valeurs correspondantes et la table de résultats de fin dépendent de la manière dont les données des requêtes secondaires sont mises en correspondance avec la requête principale.

Cela peut entraîner des résultats inattendus lorsque vous effectuez des fusions entre des explorations. La documentation sur les résultats fusionnés répond à quelques-unes de ces conditions,par exemple:

Cependant, que faites-vous lorsque vous attendez qu'une valeur d'une requête secondaire corresponde à une valeur de la requête principale, mais que le résultat final affiche des valeurs nulles ?

Cette page explique comment résoudre ce résultat inattendu.

Exemple d'utilisation

Cet exemple de cas d'utilisation est basé sur un ensemble de données d'e-commerce contenant des informations sur les utilisateurs et les commandes. Dans cet exemple, vous souhaitez fusionner une requête (le nombre d'utilisateurs par ville (Nombre d'utilisateurs regroupé par Ville d'utilisateurs) avec une requête secondaire, le nombre de commandes (Nombre de commandes) regroupés par Ville d'utilisateurs et État des utilisateurs:

Requête principale

La requête principale est Nombre d'utilisateurs, regroupée par Ville d'utilisateurs:

Explorez la table de données des résultats fusionnés affichant les résultats de la requête principale.

Requête secondaire

La requête secondaire est Nombre de commandes, regroupée par Ville d'utilisateurs et État de l'utilisateur:

Explorez le tableau de données des résultats fusionnés affichant les résultats de la requête secondaire.

La règle de fusion est configurée de manière à fusionner les deux requêtes en fonction de la ville des utilisateurs, le champ commun aux deux requêtes. Étant donné que vous connaissez l'ensemble de données et le comportement attendu des résultats fusionnés, expliqué dans la documentation mentionnée précédemment, vous savez que dans chaque ligne, chaque ville doit être associée à un État et un nombre d'utilisateurs. Vous vous attendez à ce que vos résultats fusionnés correspondent à toutes les valeurs et n'affichent aucune valeur nulle.

Cependant, les résultats contiennent des valeurs nulles. Plus de la moitié des villes ne sont associées à aucun État ni à aucun nombre de commandes:

Table de données des résultats fusionnés affichant les valeurs nulles pour les champs de requête secondaires.

Solutions

Pas de panique. Si vous êtes certain que vos données contiennent des valeurs correspondantes (essayez d'exécuter une requête distincte pour vous en assurer), plusieurs solutions s'offrent à vous pour résoudre ce problème:

  • Triez chaque requête source de la même manière.
  • Augmentez le nombre maximal de lignes de la requête source.

Trier chaque requête source de la même manière

Les résultats fusionnés étant basés sur des explorations, qui sont limitées à 500 lignes par défaut, les résultats de requête que vous fusionnez ne sont pas toujours inclus dans le résultat final.

Pour résoudre ce problème, vous pouvez modifier et trier chacune de vos requêtes sources afin qu'elles correspondent mieux entre elles. 

Dans l'exemple de cas d'utilisation, la requête principale est triée par Ville de l'utilisateur dans l'ordre croissant. La requête secondaire ne l'est pas. Pour une meilleure correspondance des résultats des deux requêtes, vous pouvez trier la requête secondaire de la même manière que la requête principale, dans ce cas, par Ville d'utilisateurs dans l'ordre croissant.

Si vous triez la requête secondaire de la même manière que la requête principale, les résultats seront mis en correspondance plus précisément dans la fusion finale:

Table de données des résultats fusionnés affichant les valeurs non nulles pour les champs de requête principale et secondaire.

Augmenter le nombre maximal de lignes de la requête source

Comme dans la première solution décrite précédemment, les valeurs nulles inattendues peuvent être causées par les limites de lignes définies dans les requêtes sources. Plus précisément, la requête secondaire (limitée par la valeur par défaut de 500 lignes) ne dispose pas de suffisamment de lignes pour correspondre à toutes les lignes générées par la requête principale. Par conséquent, des résultats nuls s'affichent dans la fusion finale.

Pour augmenter le nombre de lignes de la requête secondaire afin qu'elles correspondent à la requête principale, vous pouvez augmenter le nombre maximal de lignes dans la requête secondaire. Il y a donc plus de lignes susceptibles de correspondre à la requête principale et moins de valeurs nulles dans les colonnes de requête secondaires: 

Table de données des résultats fusionnés affichant les valeurs non nulles pour les champs de requête principale et secondaire.

Résumé

Lorsque vous êtes confronté à des résultats fusionnés inattendus, vous pouvez prendre les mesures suivantes pour résoudre le problème:

  1. Sélectionnez l'option Vider le cache et actualiser dans le menu représenté par une roue dentée de l'exploration afin de vous assurer que la requête extrait les résultats les plus récents.
  2. Vérifiez qu'il existe des valeurs correspondantes entre les requêtes sources où des valeurs nulles sont affichées, comme indiqué dans la section Et si une requête n'a pas de valeur de données correspondante ? de la documentation sur les résultats fusionnés.
  3. Triez les requêtes sources pour qu'elles correspondent mieux les unes aux autres.
  4. Augmentez la limite de lignes des requêtes sources au-delà de la valeur par défaut afin d'afficher davantage de lignes pouvant être mises en correspondance et fusionnées.
  5. Si aucune des solutions présentées ici ne résout le comportement, codez en dur la logique de join dans LookML pour obtenir un résultat plus précis, si possible.