【解決方法】2ヶ月分のデータを合計し、最新月のデータを上位50件まで表示


テーブルには部品番号、場所、col1、col2、measur1、measure2、measure3 が含まれています。 Measure3 に基づいて、上位 100 件のレコードを表示する必要があります。

重要なのは、2 か月分のデータをテーブルにロードすることです。 たとえば。 1 月と 2 月のデータを読み込みます。 部品番号、場所に基づいて、重複レコードがある場合は最新のレコードを取得する必要があります。 SQLクエリが機能している。 SQLクエリでは2か月のデータを合計します。つまり、 jan =dec+jan、feb =feb+jan でランキングして1位を取ることで最新記録を取得します。 dax を使用して power bi でそれを実現する方法。 日付テーブルや列はありません。 月を持っています。 例:nov2023=23、dec2023=24、jan2024=25、feb2024=26、mar2024=27 など。

スライサーの部品番号、場所を持っています。 テーブルには、それらのレコードのシリアル番号 1 ~ 100 を表示する必要があります。

私が試したこと:

トップ 50 を表示するための手段を作成しました。それは問題ありませんが、最新のレコードを取得する必要があります。

解決策 1

これを有意義な方法で実現するには、DB を真剣に変更する必要があります。日付ベースのデータを文字列に保存するのは常に悪い考えであり、文字列の比較は常に最初の異なる文字のペアに基づいて行われ、それ以降の文字のペアは考慮されません。 したがって、順序は次のようになります。

apr2022
apr2023
aug2022
aug2023
dec2022
dec2023
feb2022
feb2023
jan2022
jul2022
jul2023
jun2022
jun2023
mar2022
mar2023
may2022
may2023
nov2022
nov2023
oct2022
oct2023
sep2022
sep2023

それはほとんど役に立たないことです。

それを行うことは可能ですが、多大な努力が必要です。そして運が悪いと、たとえば、フランス語またはドイツ語の月の名前が 1 つあると、コードが台無しになってしまいます。

CAST 関数を使用すると、それが可能になります。

SQL
CAST('oct2023' AS DATE)

2023-10-01 が得られますが、クエリ (すべて) に多くの処理と複雑さが追加され、データにそれが含まれていないため、各月内に必要な順序は依然として得られません。すべての日付は月の最初になります。 また、行数が増えるとパフォーマンスにも影響します。

少なくとも、タイムスタンプ列 (DATETIME または DATETIME2) を DB に追加し、デフォルトで挿入時刻 (好みにより UTC) に設定し、現在使用している文字列ベースのジャンクの代わりにそれを使用します。

コメント

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