最新版本的Tableau在连接到Google的BigQuery时已开始使用标准SQL。
我最近尝试更新一个大表,但发现尝试解析日期时似乎有错误。该表源自CSV,加载到BigQuery中进行进一步的操作。原始CSV中的日期时间列包含ISO标准日期时间格式的字符串(基本上为yyyy-mm-dd hh:mm)。这样可以节省很多烦人的操作。
但是在尝试将Tableau中的日期时间字符串转换为日期或日期时,我遇到了一堆错误。经过调查,他们似乎来自BigQuery,看起来像这样:
Error: Invalid timestamp: '2015-06-28 02:01'
我一开始认为这可能是一个Tableau问题所以我将一大块原始CSV直接加载到Tableau中,其中字符串到数据的转换效果非常好。
然后我尝试了更简单的转换版本(一年而不是完整的日期时间),但它们仍然失败了。最简单转换生成的SQL如下所示:
SELECT
EXTRACT(YEAR
FROM
CAST(`Arrival_Date` AS TIMESTAMP)) AS `yr_Arrival_Date_ok`
FROM
`some_dataset`.`some_table` `some_table`
GROUP BY
1
错误消息中的无效时间戳总是看起来像一个完全有效的时间戳。进一步的分析表明,源表中的所有行都不会发生,偶尔也会发生。
此错误未出现在旧版本的Tableau / BigQuery中,其中旧版SQL是Tableau的默认值。所以我认为它是标准SQL的结果。
在BigQuery中投射到时间戳是否存在间歇性问题?或者这是一个Tableau问题,导致SQL格式不正确?我能做些什么呢?
答案 0 :(得分:1)
如果小时和分钟也存在,则需要canonical timestamp representation中的秒部分。请尝试使用PARSE_TIMESTAMP
,然后查看它是否有效:
SELECT
EXTRACT(YEAR
FROM
PARSE_TIMESTAMP('%F %R', `Arrival_Date`)) AS `yr_Arrival_Date_ok`
FROM
`some_dataset`.`some_table`.`some_table`
GROUP BY
1