Somme des données de 2 mois et pour afficher les données du dernier mois, top 50

la programmation


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 :

SQL
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.

コメント

タイトルとURLをコピーしました