[ad_1]
Tôi có bảng chứa partno,location, col1,col2,measur1,measure2,measure3. Dựa trên Biện pháp 3 phải hiển thị 100 bản ghi hàng đầu.
vấn đề là bảng đang tải dữ liệu của hai tháng. chẳng hạn. tải dữ liệu tháng 1 + tháng 2. căn cứ vào partno, location, nếu có bản ghi trùng lặp thì phải lấy bản ghi mới nhất. trong truy vấn sql đang hoạt động. trong truy vấn sql tổng hợp dữ liệu hai tháng, tức là. jan =dec+jan, feb =feb+jan, xếp hạng trên đó và chiếm vị trí số 1. bằng cách này, bạn sẽ nhận được kỷ lục mới nhất. Làm thế nào nó đạt được trong power bi bằng cách sử dụng dax. không có bảng ngày hoặc cột. có tháng. ví dụ:nov2023=23, dec2023=24, jan2024=25, feb2024=26, mar2024=27, v.v.
có phần máy thái, vị trí. và trong bảng phải hiển thị số sê-ri từ 1 đến 100 cho các bản ghi đó.
Những gì tôi đã thử:
đã tạo ra thước đo để hiển thị top 50. Không sao đâu, nhưng cần phải có được bản ghi mới nhất.
Giải pháp 1
Bạn thực sự cần phải thay đổi DB của mình để đạt được điều này theo bất kỳ cách có ý nghĩa nào: lưu trữ dữ liệu dựa trên ngày theo chuỗi luôn là một ý tưởng tồi và việc so sánh chuỗi luôn dựa trên cặp ký tự khác nhau đầu tiên – những ký tự tiếp theo thậm chí không được xem xét. Vì vậy, thứ tự sẽ là:
apr2022 apr2023 aug2022 aug2023 dec2022 dec2023 feb2022 feb2023 jan2022 jul2022 jul2023 jun2022 jun2023 mar2022 mar2023 may2022 may2023 nov2022 nov2023 oct2022 oct2023 sep2022 sep2023
Đó là khá nhiều vô ích.
Mặc dù có thể làm được điều đó nhưng cần rất nhiều nỗ lực – và cả may mắn: chẳng hạn, một tên tháng bằng tiếng Pháp hoặc tiếng Đức sẽ làm rối mã của bạn ngay lập tức.
Hàm CAST sẽ cho phép bạn làm điều đó:
CAST('oct2023' AS DATE)
Sẽ cung cấp cho bạn 2023-10-01 nhưng nó sẽ bổ sung thêm nhiều quy trình xử lý và độ phức tạp cho các truy vấn của bạn – tất cả chúng – và vẫn không cung cấp cho bạn thứ tự bạn cần trong mỗi tháng vì dữ liệu của bạn không chứa nó: tất cả các ngày sẽ là ngày đầu tiên của tháng. Và nó sẽ đạt được hiệu suất cũng như số lượng hàng của bạn tăng lên.
Ít nhất, hãy thêm cột dấu thời gian (DATETIME hoặc DATETIME2) vào DB của bạn và đặt mặc định thành thời gian chèn (theo ưu tiên UTC) và sử dụng cột đó thay vì rác dựa trên chuỗi mà bạn hiện có.
[ad_2]
コメント