Tableau中批量替换日期并添加距今天数的实现方法
解决方案
针对你需要批量为Contact列中Call/Visit/Skype后的日期添加距指定日期(10 Jan, 2023)天数的需求,以下是基于REGEXP_REPLACE结合日期计算函数的实现方案,分两种常用工具场景说明:
场景1:Tableau(匹配你提到的DATEPARSE函数使用场景)
创建一个新的计算字段,使用以下公式:
REGEXP_REPLACE( [Contact], '(\d{2} [A-Za-z]{3}, \d{2})', "$1 (" + STR(INT(DATE('2023-01-10') - DATEPARSE('dd MMM, yy', $1))) + " Days)" )
公式说明:
(\d{2} [A-Za-z]{3}, \d{2}):正则捕获组,精准匹配dd MMM, yy格式的日期(如22 Dec, 22)DATE('2023-01-10'):固定你指定的基准日期,避免TODAY()随时间变动导致结果变化DATEPARSE('dd MMM, yy', $1):将捕获到的日期字符串转换为可计算的日期格式INT(DATE(...) - DATEPARSE(...)):计算两个日期的天数差并取整STR(...):将天数转换为字符串,拼接成(X Days)的格式REGEXP_REPLACE:把原日期替换为日期 (X Days)的组合形式
场景2:Google Sheets
假设Contact列在A列,在空白列(如B列)输入以下数组公式,自动批量处理整列数据:
=ARRAYFORMULA( IF( A:A="",, REGEXREPLACE( A:A, "(\d{2} [A-Za-z]{3}, \d{2})", "$1 ("&INT(DATE(2023,1,10)-DATEVALUE(REGEXEXTRACT(A:A,"(\d{2} [A-Za-z]{3}, \d{2})")))&" Days)" ) ) )
公式说明:
ARRAYFORMULA:实现整列批量处理,无需手动下拉公式DATE(2023,1,10):指定固定的基准日期DATEVALUE(REGEXEXTRACT(...)):提取并转换日期字符串为可计算的日期格式INT(...):计算天数差并取整REGEXREPLACE:完成日期与天数的拼接替换
关键注意点
- 若日期的月份缩写存在大小写差异,当前正则表达式
(\d{2} [A-Za-z]{3}, \d{2})已兼容大小写匹配 - 若需要使用动态当前日期而非固定值,直接替换公式中的
DATE('2023-01-10')或DATE(2023,1,10)为TODAY()即可,但结果会随日期变动更新
内容的提问来源于stack exchange,提问作者cph_sto
相关产品推荐
相关产品推荐

