[ad_1]
J’ai une table contenant le numéro de pièce, l’emplacement, col1, col2, mesure1, mesure2, mesure3. Basé sur Measure3, il doit afficher les 100 meilleurs enregistrements.
le problème est qu’une table charge deux mois de données. par ex. Chargement des données janvier + février. en fonction du numéro de pièce, de l’emplacement, si des enregistrements en double doivent prendre le dernier enregistrement. dans la requête SQL fonctionnant. dans la requête SQL additionnant les données de deux mois, c’est-à-dire. jan =dec+jan, feb =feb+jan, se classant sur eux et prenant le rang 1. obtenant ainsi le dernier record. Comment cela est réalisé en power bi en utilisant dax. pas de table ou de colonne de date. avoir un mois. par exemple : nov2023=23, dec2023=24, jan2024=25, feb2024=26, mar2024=27 et ainsi de suite.
avoir des trancheuses partno,emplacement. et dans le tableau doit afficher le numéro de série de 1 à 100 pour ces enregistrements.
Ce que j’ai essayé :
créé une mesure pour afficher le top 50. c’est ok, mais il faut obtenir le dernier record.
Solution 1
Vous devez sérieusement modifier votre base de données pour y parvenir de manière significative : stocker des données basées sur la date dans des chaînes est toujours une mauvaise idée et les comparaisons de chaînes sont toujours basées sur la première paire de caractères différente – les suivantes ne sont même pas examinées. L’ordre serait donc :
apr2022 apr2023 aug2022 aug2023 dec2022 dec2023 feb2022 feb2023 jan2022 jul2022 jul2023 jun2022 jun2023 mar2022 mar2023 may2022 may2023 nov2022 nov2023 oct2022 oct2023 sep2022 sep2023
Ce qui est plutôt inutile.
Bien que cela soit possible, cela demande beaucoup d’efforts – et de chance : un nom de mois français ou allemand perturbera votre code par exemple.
La fonction CAST vous permettra de le faire :
CAST('oct2023' AS DATE)
Vous donnera le 01/10/2023, mais cela ajoutera beaucoup de traitement et de complexité à vos requêtes – toutes – et ne vous donnera toujours pas la commande dont vous avez besoin chaque mois car vos données ne la contiennent pas : toutes les dates seront les premières du mois. Et cela affectera les performances à mesure que votre nombre de lignes augmentera.
À tout le moins, ajoutez une colonne d’horodatage (DATETIME ou DATETIME2) à votre base de données et utilisez-la par défaut sur l’heure d’insertion (en UTC de préférence) et utilisez-la à la place des fichiers indésirables basés sur une chaîne que vous avez actuellement.
[ad_2]
コメント