日期字段上的数据质量

时间:2017-04-07 20:15:41

标签: google-bigquery

我在处理字符串格式的日期字段时遇到问题,所以我正在尝试清理基础。我的基础中的默认格式日期字符串是“%d /%m /%Y”,但由于这来自csv文件,可能存在一些不合需要的字符串。当我尝试解析时,我遇到了错误:

parse_date('%d/%m/%Y',trim(e.checkin))

像这样,但每次我跑的时候都会得到一个新的有问题的字符:

 Illegal non-space trailing data '�' in string "25/07/201€" 

处理此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

解决此问题的核心是识别具有“损坏的”checkin字段

的行

然后,您可以跳过处理它们,如下所示

  
#standardSQL
WITH e AS (
  SELECT '25/07/201€' AS checkin UNION ALL
  SELECT '25/07/2016'
)
SELECT 
  checkin AS checking_string, 
  PARSE_DATE('%d/%m/%Y',TRIM(e.checkin)) AS checking_date
FROM e
WHERE REGEXP_CONTAINS(e.checkin, r'^(\d){2}/(\d){2}/(\d){4}$')

或者你可以采用某种方式特别针对那些破碎的价值进行处理的逻辑

无论如何,使用WHERE REGEXP_CONTAINS(e.checkin, r'^(\d){2}/(\d){2}/(\d){4}$')方法可以控制情况

希望这能给你足够的指示