Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Dans ce didacticiel, vous apprendrez comment la fonction fonctionne dans DAX à l'aide du volet Server Timings et de son plan de requête.

La fonction CROSSJOIN peut être utilisée pour créer un produit cartésien de deux tables. Un produit cartésien est un ensemble de toutes les combinaisons possibles de lignes de deux tables ou plus.

Le code DAX ci-dessous sera utilisé dans ce tutoriel.

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Vous pouvez voir que la fonction CROSSJOIN donne une combinaison du produit Brand et Color même si certaines de ces combinaisons n'existent pas dans la table Fact . Cela donne un tableau avec un total de 176 lignes.

Dans l'onglet Server Timings, la première requête récupère la marque de la table Products, tandis que la seconde requête récupère la couleur.

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Dans le plan de requête logique , la première ligne renvoie le résultat sous la forme d'un tableau. Les deuxième et troisième lignes du tableau des produits analysent respectivement la couleur et la marque.

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Une fois les données reçues, le moteur de formule parcourt la table et produit une combinaison des deux colonnes. Le CrossApply en ligne 2 correspond à la fonction CROSSJOIN.

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Table des matières

Filtrer les résultats CROSSJOIN dans DAX

Vous pouvez utiliser la fonction pour filtrer les résultats d'un CROSSJOIN. Par exemple, vous pouvez l'utiliser pour afficher uniquement les produits rouges.

Cependant, rappelez-vous que vous ne pouvez pas placer une fonction CROSSJOIN dans un argument FILTER .

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Maintenant, si vous exécutez ce code et vérifiez l'onglet Server Timings, vous verrez que le contexte de filtre n'apparaît pas comme une clause WHERE dans la requête.

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

La fonction CROSSJOIN ne peut être résolue que par le Formula Engine . Le code ne fonctionne pas car il se situe entre FILTER et qui sont des fonctions qui ne peuvent être résolues que par le Storage Engine . Ainsi, le CROSSJOIN a provoqué la rupture de la boucle entre ces deux fonctions.

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Par conséquent, vous devez placer la fonction FILTER dans l'argument CROSSJOIN pour que le filtre fonctionne.

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Maintenant, si vous exécutez ce code et vérifiez l'onglet Server Timings, vous verrez que la fonction FILTER est maintenant représentée par la clause WHERE.

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Dans le plan de requête logique, vous pouvez voir qu'au lieu de l'opérateur de filtre, le filtre VertiPaq est utilisé.

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

En effet, la nouvelle condition de filtre dans le code peut être transmise au moteur de stockage. Une fois le résultat renvoyé, l'argument CROSSJOIN est ensuite exécuté dans le moteur de formule.

L'opérateur IN

Vous pouvez également utiliser l' opérateur au lieu du signe égal dans un argument FILTER.

L'opérateur IN peut être utilisé dans l'argument d'expression de la fonction FILTER pour filtrer une table selon qu'une valeur est contenue dans une liste de valeurs ou dans une table.

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Lorsque vous utilisez la combinaison FILTER – IN , le moteur DAX doit effectuer un filtre IsEmpty qui confirme si la couleur du produit est Rouge ou Noir.

Ajouter la colonne des ventes totales dans le résultat CROSSJOIN DAX

D'autres fonctions peuvent également être utilisées avec CROSSJOIN.

Vous pouvez utiliser la fonction pour ajouter une autre colonne dans votre table, puis écrire l'argument des informations que vous souhaitez afficher.

Dans cet exemple, ajoutons une colonne Total Sales.

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Lorsque vous exécutez le code, les résultats renverront toujours 176 lignes. Cependant, certaines combinaisons auront des valeurs vides dans la colonne Total des ventes. En effet, ces combinaisons n'ont pas de ligne correspondante dans la table Sales.

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Dans l'onglet Server Timings, le code sélectionne d'abord la marque et la couleur. Il résume ensuite le produit de la quantité et du prix net de vente.

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Dans ce cas, le moteur DAX récupère d'abord toutes les combinaisons de marque et de couleur qui existent dans la table Products, ainsi que celles avec une ligne correspondante dans la table Sales. Ensuite, il récupère les colonnes marque et couleur séparément.

Dans le plan de requête physique, vous pouvez voir deux caches de données ; un pour la marque et un autre pour la couleur. Lorsque vous multipliez leurs enregistrements totaux, vous obtenez 176 lignes.

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Ensuite, une recherche est effectuée sur ces 176 lignes pour voir si elles ont une valeur correspondante dans la table Sales. Vous pouvez voir que seules 111 lignes ont des valeurs. Les 65 autres lignes renverront des blancs.

De plus, si vous ajoutez plus de colonnes dans l'argument CROSSJOIN, le résultat renverra également plus de lignes.

Fonction CROSSJOIN DAX : horaires du serveur et plan de requête

Conclusion

La fonction DAX CROSSJOIN génère une nouvelle table en combinant les lignes d'une table avec les lignes d'une autre. Cette fonction est similaire à la clause CROSS JOIN dans SQL et peut être utilisée pour créer des requêtes plus complexes dans votre modèle de données.

Il peut générer une liste de toutes les combinaisons de valeurs possibles à partir de deux tables ou plus. Il peut également être utilisé pour créer rapidement une nouvelle table avec un grand nombre de lignes, ce qui peut être utile pour l'analyse des données, les tests ou l'analyse comparative des performances.

Dans l'ensemble, la fonction CROSSJOIN est un outil pratique dans les scénarios où vous devez combiner des données de plusieurs tables ou générer une liste de toutes les combinaisons possibles.

Tous mes vœux,


Quest-ce que le self en Python ? Exemples concrets

Quest-ce que le self en Python ? Exemples concrets

Qu'est-ce que le self en Python ? Exemples concrets

Comment enregistrer et charger un fichier RDS dans R

Comment enregistrer et charger un fichier RDS dans R

Vous apprendrez à enregistrer et à charger des objets à partir d'un fichier .rds dans R. Ce blog expliquera également comment importer des objets de R vers LuckyTemplates.

First N Business Days Revisited - Une solution de langage de codage DAX

First N Business Days Revisited - Une solution de langage de codage DAX

Dans ce didacticiel sur le langage de codage DAX, découvrez comment utiliser la fonction GENERATE et comment modifier dynamiquement le titre d'une mesure.

Présentez des informations à laide de la technique des visuels dynamiques multi-threads dans LuckyTemplates

Présentez des informations à laide de la technique des visuels dynamiques multi-threads dans LuckyTemplates

Ce didacticiel explique comment utiliser la technique Multi Threaded Dynamic Visuals pour créer des informations à partir de visualisations de données dynamiques dans vos rapports.

Introduction au filtrage du contexte dans LuckyTemplates

Introduction au filtrage du contexte dans LuckyTemplates

Dans cet article, je vais parcourir le contexte du filtre. Le contexte de filtrage est l'un des principaux sujets que tout utilisateur de LuckyTemplates doit d'abord connaître.

Meilleurs conseils pour utiliser les applications dans le service en ligne LuckyTemplates

Meilleurs conseils pour utiliser les applications dans le service en ligne LuckyTemplates

Je souhaite montrer comment le service en ligne LuckyTemplates Apps peut aider à gérer différents rapports et informations générés à partir de diverses sources.

Analyser les changements de marge bénéficiaire au fil du temps - Analytics avec LuckyTemplates et DAX

Analyser les changements de marge bénéficiaire au fil du temps - Analytics avec LuckyTemplates et DAX

Découvrez comment calculer les modifications de votre marge bénéficiaire à l'aide de techniques telles que la création de branches de mesure et la combinaison de formules DAX dans LuckyTemplates.

Idées de matérialisation pour les caches de données dans DAX Studio

Idées de matérialisation pour les caches de données dans DAX Studio

Ce didacticiel abordera les idées de matérialisation des caches de données et comment elles affectent les performances des DAX dans la fourniture de résultats.

Rapports dentreprise à laide de LuckyTemplates

Rapports dentreprise à laide de LuckyTemplates

Si vous utilisez encore Excel jusqu'à présent, c'est le meilleur moment pour commencer à utiliser LuckyTemplates pour vos besoins en matière de rapports commerciaux.

Quest-ce que la passerelle LuckyTemplates ? Tout ce que tu as besoin de savoir

Quest-ce que la passerelle LuckyTemplates ? Tout ce que tu as besoin de savoir

Qu'est-ce que la passerelle LuckyTemplates ? Tout ce que tu as besoin de savoir