如何筛选最大Fiscal_Year对应最大Fiscal_Month的可视化展示数据
筛选最大财年对应最大财月数据的实现方案
核心逻辑
- 先把字符串格式的
Fiscal_Month映射为可比较大小的数字,避免字符串排序出现错误(比如按字符排序apr会排在jan之前) - 提取全量数据中最大的
Fiscal_Year值 - 筛选该最大财年下的所有数据,提取其中数字月份最大的
Fiscal_Month值 - 用得到的财年、财月组合过滤全量数据集,再基于过滤后的结果生成可视化视图
注意:如果你的财月字符串不是英文缩写(比如是中文月份、其他语言缩写),仅需对应调整月份映射逻辑即可,整体筛选逻辑无需修改。
不同工具的实现示例
1. Python Pandas 环境
# 定义英文月份缩写到数字的映射,可根据你实际的月份格式调整 month_map = { 'jan':1, 'feb':2, 'mar':3, 'apr':4, 'may':5, 'jun':6, 'jul':7, 'aug':8, 'sept':9, 'oct':10, 'nov':11, 'dec':12 } # 新增数字月份列用于大小比较 df['month_num'] = df['Fiscal_Month'].str.lower().map(month_map) # 取全量数据最大财年 max_year = df['Fiscal_Year'].max() # 取最大财年下的最大月份 max_month_num = df[df['Fiscal_Year'] == max_year]['month_num'].max() max_month = df[df['month_num'] == max_month_num]['Fiscal_Month'].iloc[0] # 过滤得到目标数据,直接用于可视化即可 target_df = df[(df['Fiscal_Year'] == max_year) & (df['Fiscal_Month'] == max_month)]
2. SQL 环境
WITH max_period AS ( SELECT Fiscal_Year, Fiscal_Month, -- 转换字符串月份为可比较的数字,根据实际月份格式调整CASE逻辑 CASE LOWER(Fiscal_Month) WHEN 'jan' THEN 1 WHEN 'feb' THEN 2 WHEN 'mar' THEN 3 WHEN 'apr' THEN 4 WHEN 'may' THEN 5 WHEN 'jun' THEN 6 WHEN 'jul' THEN 7 WHEN 'aug' THEN 8 WHEN 'sept' THEN 9 WHEN 'oct' THEN 10 WHEN 'nov' THEN 11 WHEN 'dec' THEN 12 END AS month_num FROM your_table ORDER BY Fiscal_Year DESC, month_num DESC LIMIT 1 ) -- 关联原表过滤得到最新财月的所有数据 SELECT t.* FROM your_table t INNER JOIN max_period m ON t.Fiscal_Year = m.Fiscal_Year AND t.Fiscal_Month = m.Fiscal_Month
3. Power BI 环境
创建度量值用于筛选:
IsLatestPeriod = VAR MaxYear = MAX('YourTable'[Fiscal_Year]) VAR MonthNum = SWITCH( LOWER('YourTable'[Fiscal_Month]), "jan",1,"feb",2,"mar",3,"apr",4,"may",5,"jun",6, "jul",7,"aug",8,"sept",9,"oct",10,"nov",11,"dec",12 ) VAR MaxMonthNum = CALCULATE(MAX(MonthNum), ALL('YourTable'), 'YourTable'[Fiscal_Year] = MaxYear) RETURN IF('YourTable'[Fiscal_Year] = MaxYear && MonthNum = MaxMonthNum, 1, 0)
将该度量值加入可视化页面的筛选器,设置值等于1,即可自动仅展示最新财月的数据。
内容的提问来源于stack exchange,提问作者Rakshit Kandpal
相关产品推荐
相关产品推荐

