Google bigquery BigQuery-使用默认值将字符串转换为时间戳
在BigQuery中,我有Google bigquery BigQuery-使用默认值将字符串转换为时间戳,google-bigquery,timestamp,Google Bigquery,Timestamp,在BigQuery中,我有String列,其中包含时间戳数据。在查询中,我想将其转换为Timestamp列。 我知道,BigQuery有PARSE_TIMESTAMP和TIMESTAMP函数。问题是,这些数据来自外部源,所以我需要做好准备,以防输入的String可能不是正确的时间戳。 在查询中使用这些函数时,如果输入数据格式错误,则查询将失败。 有没有一种方法可以让这个查询在输入数据错误的情况下通过?例如,将不正确的格式更改为null或某些任意时间戳,如1900-01-01 00:00:00 简
String
列,其中包含时间戳数据。在查询中,我想将其转换为Timestamp
列。我知道,BigQuery有
PARSE_TIMESTAMP
和TIMESTAMP
函数。问题是,这些数据来自外部源,所以我需要做好准备,以防输入的String
可能不是正确的时间戳。在查询中使用这些函数时,如果输入数据格式错误,则查询将失败。
有没有一种方法可以让这个查询在输入数据错误的情况下通过?例如,将不正确的格式更改为
null
或某些任意时间戳,如1900-01-01 00:00:00
简单的regexp检查是不够的。例如,
2020-02-29 00:00:00
是一个完全正确的时间戳,但2019-02-29 00:00:00
是不正确的。您需要使用SAFE作为前缀,以便为无效数据获取空值
SELECT safe.timestamp('2019-02-29 00:00:00') as tt
返回
[
{
"tt": null
}
]
如果你用保险箱开始一个功能。前缀,它将返回NULL
而不是一个错误。保险箱。前缀仅防止来自
带前缀的函数本身:它不能防止在
计算参数表达式。保险箱。前缀只能防止错误
这是由于函数输入值引起的,例如“值”
“超出范围”错误;其他错误,如内部或系统错误,
可能仍然会发生。如果函数未返回错误,请选择SAFE。有
对输出没有影响。如果函数从未返回错误,如
兰德,那就安全了。没有效果
您需要使用SAFE作为前缀,以便为无效数据获取空值
SELECT safe.timestamp('2019-02-29 00:00:00') as tt
返回
[
{
"tt": null
}
]
如果你用保险箱开始一个功能。前缀,它将返回NULL
而不是一个错误。保险箱。前缀仅防止来自
带前缀的函数本身:它不能防止在
计算参数表达式。保险箱。前缀只能防止错误
这是由于函数输入值引起的,例如“值”
“超出范围”错误;其他错误,如内部或系统错误,
可能仍然会发生。如果函数未返回错误,请选择SAFE。有
对输出没有影响。如果函数从未返回错误,如
兰德,那就安全了。没有效果