Fonction DAX CALCULATETABLE Vs FILTER

Fonction DAX CALCULATETABLE Vs FILTER

et sont tous deux des outils puissants pour manipuler et analyser des données dans une requête DAX, mais ils présentent des différences clés qu'il est important de comprendre.

Dans ce blog, nous allons passer en revue la fonction CALCULATETABLE et son plan de requête dans DAX studio et comprendre en quoi elle diffère de la fonction FILTER . À la fin, vous comprendrez mieux comment choisir la bonne fonction pour vos besoins d'analyse de données.

Pour démontrer, nous utiliserons le code DAX ci-dessous.

Fonction DAX CALCULATETABLE Vs FILTER

Lorsque vous exécutez ce code, vous obtenez un tableau indiquant la marque et la couleur.

Fonction DAX CALCULATETABLE Vs FILTER

Dans l' onglet Plans de requête , vous obtiendrez un code correspondant à l' opérateur CrossApply dans le Formula Engine .

Fonction DAX CALCULATETABLE Vs FILTER

En même temps, vous pouvez voir que le code ne récupère que la couleur et la marque du produit dans l' onglet Server Timings .

Fonction DAX CALCULATETABLE Vs FILTER

Table des matières

Résultat des synchronisations du serveur DAX Studio pour CALCULATETABLE

Par exemple, filtrons la couleur du produit pour n'afficher que le rouge et/ou le noir.

Vous pouvez le faire en utilisant la fonction FILTER. Lorsque vous l'exécutez, le Server Timings indique que l'argument FILTER n'est pas appliqué au code xmSQL .

Fonction DAX CALCULATETABLE Vs FILTER

Mais si vous utilisez la fonction CALCULATETABLE, la requête dans l'onglet Server Timings montrera que les résultats ont été filtrés par couleur de produit.

Fonction DAX CALCULATETABLE Vs FILTER

Plan de requête CALCULATETABLE dans DAX Studio

Examinons le plan de requête pour chaque fonction.

CALCULATETABLE se trouve sur la première ligne du plan de requête logique car il s'agit d'une fonction de niveau supérieur dans le code et ne dépend donc d'aucune exigence.

Fonction DAX CALCULATETABLE Vs FILTER

Lorsque vous lisez le plan de requête d'une fonction CALCULATETABLE, vous ne commencez pas par le premier argument. Vous devez d'abord comprendre le contexte de filtre utilisé. Passons donc à la ligne 5.

Vous pouvez voir que l' opérateur VertiPaq nécessite la colonne de couleur du produit en raison du filtre appliqué. Il analyse ensuite cette colonne et utilise la combinaison de filtres Not IsEmpty pour vérifier la couleur du produit par rapport à chaque ligne.

Une fois le contexte de filtre préparé, l' argument est exécuté.

Avec le recul, si vous utilisez la fonction FILTER, vous verrez un plan de requête différent, de sorte que l'argument CROSSJOIN est exécuté avant d'identifier le contexte de filtre.

Fonction DAX CALCULATETABLE Vs FILTER

L'inconvénient de cette approche est qu'elle ne pousse pas la condition de filtre vers le moteur de stockage. Vous ne pourrez pas utiliser la clause WHERE dans xmSQL, ce qui imposera une lourde charge au Formula Engine.

Et lorsque vous travaillez avec plusieurs tables, la combinaison de filtres de la fonction CROSSJOIN sera énorme. Cela ralentit les performances du code DAX. Ainsi, dans la plupart des cas, il est recommandé d'utiliser la fonction CALCULATETABLE.

Ainsi, au lieu d'effectuer tous les calculs dans le Formula Engine, vous pouvez injecter la condition de filtre dans la classe WHERE du code XMSQL.

Transition de contexte pour des fonctions DAX similaires

Horaires du serveur

Ce concept s'applique également à la fonction CALCULER. Utilisons le code DAX ci-dessous comme exemple.

Fonction DAX CALCULATETABLE Vs FILTER

Une mesure est automatiquement entourée d'une fonction CALCULER.

Lorsque vous exécutez ce code, vous obtenez un tableau indiquant le montant total des ventes pour chaque couleur.

Fonction DAX CALCULATETABLE Vs FILTER

Dans l'onglet Server Timings, vous pouvez voir que le code exécute deux requêtes. La première requête calcule la somme du montant Sales de la table Sales par rapport à la table Products.

Fonction DAX CALCULATETABLE Vs FILTER

En revanche, la deuxième requête récupère à nouveau la couleur du produit dans la table Produits. Il correspond à la fonction dans le code DAX.

Fonction DAX CALCULATETABLE Vs FILTER

Le moteur de formule place les caches de données des deux requêtes côte à côte. Il commence par récupérer les valeurs du deuxième cache de données, puis effectue une recherche dans le premier cache de données.

Plan de requête

Dans l'onglet Plan de requête, le plan de requête logique analyse la couleur du produit en raison de l' argument .

Ensuite, VertiPaq résume le montant total des ventes en fonction de la couleur du produit. Il effectue la transition de contexte qui convertit la valeur de couleur du produit en un contexte de filtre équivalent.

Fonction DAX CALCULATETABLE Vs FILTER

Le filtre créé par la transition de contexte est traduit en une propriété DependOnCols dans le plan de requête. Une fois que VertiPaq a scanné les colonnes requises pour calculer le total des ventes, il multiplie la quantité des ventes par le prix net.

Les ventes totales sont ensuite renvoyées sous la forme d'un type de données de devise. Et enfin, ADDCOLUMNS renvoie une table avec deux colonnes contenant le montant de la couleur et du total des ventes.

Conclusion

Le plan de requête peut avoir un impact significatif sur les performances d'une requête, car différents plans de requête peuvent avoir différents niveaux d'efficacité.

Lors de l'utilisation des fonctions CALCULATETABLE et FILTER dans une requête DAX, le plan de requête peut différer selon le scénario spécifique et divers facteurs, tels que l'expression de formule spécifique utilisée et les capacités du moteur de requête.

En général, il est conseillé de tester et de comparer les performances de différents plans de requête afin de déterminer l'approche la plus efficace pour un scénario donné.

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