[ad_1]
テーブルには部品番号、場所、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 関数を使用すると、それが可能になります。
CAST('oct2023' AS DATE)
2023-10-01 が得られますが、クエリ (すべて) に多くの処理と複雑さが追加され、データにそれが含まれていないため、各月内に必要な順序は依然として得られません。すべての日付は月の最初になります。 また、行数が増えるとパフォーマンスにも影響します。
少なくとも、タイムスタンプ列 (DATETIME または DATETIME2) を DB に追加し、デフォルトで挿入時刻 (好みにより UTC) に設定し、現在使用している文字列ベースのジャンクの代わりにそれを使用します。
[ad_2]
コメント