You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spotfire中用Lubridate按任务起止日期拆分行及报错排查

在Spotfire中用R拆分任务起止日期为月度多行数据并解决"object 'TYPE' not found"错误

问题背景

你的数据集每行包含TASK_START、TASK_END、用户、项目等字段,需要将跨月的任务拆分成对应月份的独立行(比如任务从2023-05-20到2023-07-10,需拆分为5月、6月、7月三行)。因无法通过SQL创建视图处理,转而使用Spotfire结合R的lubridate和data.table工具,但执行脚本时出现object 'TYPE' not found错误。

错误原因

object 'TYPE' not found的核心原因是脚本中引用了名为TYPE的变量/列,但你的数据集里不存在该字段,或是引用时出现拼写错误、未正确匹配Spotfire输入数据的列名(比如大小写不一致、列名带空格未加反引号)。

正确实现脚本(Spotfire R脚本)

先确保在Spotfire中已将目标数据集设为R脚本的输入数据(默认名为InputData),然后使用以下脚本替换原有错误代码,完成日期拆分:

# 加载依赖包
library(data.table)
library(lubridate)

# 将Spotfire输入数据转为data.table格式
dt <- as.data.table(InputData)

# 生成每个任务覆盖的所有月份序列
dt[, month_seq := Map(function(start, end) {
  seq(floor_date(start, "month"), floor_date(end, "month"), by = "month")
}, TASK_START, TASK_END)]

# 拆分原行为月度多行,保留所有原字段
dt_expanded <- dt[, .(
  MONTH = unlist(month_seq),
  USER = USER,  # 替换为你数据集实际的用户列名
  PROJECT = PROJECT,  # 替换为你数据集实际的项目列名
  # 这里添加所有需要保留的其他字段
  TASK_ORIGINAL_START = TASK_START,
  TASK_ORIGINAL_END = TASK_END
), by = .(ROWID)]  # ROWID是Spotfire自动生成的行唯一标识,用于关联原行数据

# 清理临时列
dt_expanded[, c("month_seq", "ROWID") := NULL]

# 计算每个月的实际任务起止日期(处理跨月边界)
dt_expanded[, MONTH_START := floor_date(MONTH, "month")]
dt_expanded[, MONTH_END := ceiling_date(MONTH, "month") - days(1)]
dt_expanded[, TASK_MONTH_START := pmax(TASK_ORIGINAL_START, MONTH_START)]
dt_expanded[, TASK_MONTH_END := pmin(TASK_ORIGINAL_END, MONTH_END)]

# 设置输出给Spotfire的数据集
OutputData <- dt_expanded

关键注意事项

  1. 列名匹配:确保脚本中所有字段名(如USER、PROJECT)和你数据集的实际列名完全一致,若列名带空格,需用反引号包裹(比如USER NAME要写成`USER NAME`)。
  2. 字段保留:根据实际需求,在拆分步骤中添加所有需要保留的原表字段,不要遗漏。
  3. 日期边界处理:脚本中生成的TASK_MONTH_START和TASK_MONTH_END会自动计算任务在对应月份的实际起止日期,避免跨月数据的日期错误。

测试示例

假设输入数据一行:

TASK_STARTTASK_ENDUSERPROJECT
2023-05-202023-07-10AliceProjectA

拆分后输出三行:

MONTHUSERPROJECTTASK_ORIGINAL_STARTTASK_ORIGINAL_ENDMONTH_STARTMONTH_ENDTASK_MONTH_STARTTASK_MONTH_END
2023-05-01AliceProjectA2023-05-202023-07-102023-05-012023-05-312023-05-202023-05-31
2023-06-01AliceProjectA2023-05-202023-07-102023-06-012023-06-302023-06-012023-06-30
2023-07-01AliceProjectA2023-05-202023-07-102023-07-012023-07-312023-07-012023-07-10

内容的提问来源于stack exchange,提问作者Phic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:22:34