加入 PowerBI自己学 知识星球:下载源文件,边学边练;遇到问题,还可以提问交流。
拉链表是常见的表格形式,它能记录数据的历史状态,通过开始日期和结束日期优化去除了一部分不变的记录,优点是方便维护、节省存储。
PowerBI建模时,如果需要按日期建立关系和汇总,就要把日期展开放在一列,转换为一维表。
解决方案
将每一行的开始日期和结束日期之间的日期展开,形成1行*N行的笛卡尔积。
举例
将使用开始日期和结束日期的假期表转换为带日期列的一维表。
操作步骤
STEP 1 PowerQuery获取数据后,点击菜单栏添加列下的自定义列,输入如下代码。
List.Dates([开始日期],Duration.Days([结束日期]-[开始日期])+1,#duration( 1, 0, 0, 0 ))
List.Dates是用开始日期、延续天数生成一个日期列表。
STEP 2 点击日期列标题右侧的展开按钮,选择扩展到新行。
STEP 3 调整日期列的数据类型后,如下:
拓展
List.Numbers与List.Dates类似,能实现数字区间的展开。