dDate日期维度表

1.DAX公式

bash 复制代码
dDate = 
ADDCOLUMNS(
    CALENDAR(MIN('销售出库单'[业务日期]), TODAY()),
    /* ---年/季/月/日/当前日/自定义财年/最新业务日期 --- */
    "Year",                    YEAR([Date]),
    "Quartername",             "Q" & QUARTER([Date]),
    "Month",                   FORMAT([Date], "mmmm"),
    "Month Number",            MONTH([Date]),
    "Month Number one",        FORMAT(MONTH([Date]), "0") & "月",
    "日期",                    YEAR([Date]) & "-" & FORMAT([Date], "MM"),
    "Quarternumber",           ROUNDUP(MONTH([Date]) / 3, 0),
    "Yearquartersort",         YEAR([Date]) * 10 + ROUNDUP(MONTH([Date]) / 3, 0),
    "Year-Quarter",            YEAR([Date]) & "-" & "Q" & QUARTER([Date]),
    "Year-Month",              YEAR([Date]) & "-" & FORMAT([Date], "mmm"),
    "Yearmonthsort",           YEAR([Date]) * 100 + MONTH([Date]),
    "Day",                     DAY([Date]),
    "Year-Month-Day",          YEAR([Date]) & "/" & FORMAT([Date], "MM") & "/" & DAY([Date]),
    "CurrentFlag",             IF([Date] = TODAY(), 1, 0),
    "CustomYear",              IF(AND([Date] >= DATE(YEAR([Date]), 8, 1), [Date] <= DATE(YEAR([Date]) + 1, 8, 1)), YEAR([Date]), YEAR([Date]) - 1),

    /* ---------- 新增周维度(周一 = 当周第一天,中国 2025-04-W1 格式) ---------- */
    "WeekNumber",              WEEKNUM([Date], 21),  // ISO 周号
    "MonthWeekIndex",          ROUNDDOWN((DAY([Date]) - 1) / 7, 0) + 1,  // 当月第几周 1-5
    "Year-Month-Week",         YEAR([Date]) & "-" & FORMAT([Date], "MM") & "-W" & ROUNDDOWN((DAY([Date]) - 1) / 7, 0) + 1,
    "YearMonthWeekSort",       YEAR([Date]) * 1000 + MONTH([Date]) * 10 + ROUNDDOWN((DAY([Date]) - 1) / 7, 0) + 1,
    "WeekStart",               [Date] - WEEKDAY([Date], 2) + 1,  // 当周周一
    "WeekEnd",                 [Date] - WEEKDAY([Date], 2) + 7,  // 当周周日

    /* --- 动态计算今日和昨日日期标志 --- */
    "TodayFlag", 
    IF([Date] = TODAY(), "今日", 
       IF([Date] = TODAY() - 1, "昨日", BLANK()))
)
  • 以事实表 '销售出库单'业务日期 的最小值 → 今天,生成连续日历。

  • 用 ADDCOLUMNS 一次性把后续报表里要用的所有时间维度字段都"打"上去,避免以后反复写计算列。

  • 所有字段都是计算列,不是度量值;表刷新时一次性算完,后续切片、筛选、排序直接拖字段即可。

  • 自定义财年

    CustomYear = 如果日期在当年 8-1 到次年 7-31 之间,则财年=当年,否则=上年。

    → 8 月 1 日作为财年起点,常见于零售/教育行业。

  • 报表里需要"周"维度时,直接拖 Year-Month-Week 或 WeekStart/WeekEnd 即可;排序用 YearMonthWeekSort。

2.日期切片器

  • 单日筛选

" TodayFlag " 为文本类型字段,直接拖放切片器字段值,视觉对象垂直列表可全部显示,打开单项选择则实现单选筛选数据,打开 "全选" 选项则切片器有全选选项。

  • 日期范围筛选

" Date " 字段类型需要设置为日期格式,点击Date字段,将数据类型修改为日期时间,格式选择自己喜好类型。切片器设置选项样式为介于,在日期表中MIN日期与MAX日期的范围选择,图中隐藏日期滑块,打开滑块可以滑动选择日期。

3. 模型视图关联

日期维度表Date字段与 " 业务单据表 " 形成模型视图关联,交叉筛选方向选择双向,可以应用安全筛选器。这样就可以实现日期维度表整个看板的数据筛选。

相关推荐
SL_staff8 小时前
为什么业务总在等IT跑数?从组织断层看数据可用性落地实践
数据分析·数据可视化·全栈
SL_staff1 天前
为什么业务总在等BI报表?JVS-BI的可视化ELT实践解析
spring·数据分析·数据可视化
龙亘川1 天前
系统监控业务建模:从运行状态监测到异常处置恢复闭环
大数据·人工智能·智慧城市·开源软件·数据可视化
龙亘川2 天前
数字化支撑社保合规治理:亘川智城智慧人社模块实践路径
大数据·人工智能·智慧城市·开源软件·数据可视化
Flynt2 天前
开源"间谍卫星"说数据全是真的,我把它的免key数据源挨个试了一遍
前端·开源·数据可视化
柳杉2 天前
借助 Codex 和可视化工作流,从调研到完整实现,3D 大屏竟然可以这么简单
前端·ai编程·数据可视化
纸片人3 天前
甲方只给了一张卫星截图,我用 Three.js + Blender 建了一座 3D 能源站
three.js·数据可视化
纸片人3 天前
从一座城市钻进一个房间:Three.js + Blender 做一个五级钻取的数字楼宇大屏
three.js·数据可视化
数脉3 天前
数据血缘的八个典型企业应用场景
数据挖掘·数据分析·数据可视化
SL_staff3 天前
BI不该只服务高管:JVS如何让仓库管理员自主配置库存预警
spring boot·数据分析·数据可视化