Google bigquery BigQueryUDF支持
我对谷歌的BigQuery非常陌生 我想根据希望将天转换为周的日期和月份来解析时间戳(Google bigquery BigQueryUDF支持,google-bigquery,Google Bigquery,我对谷歌的BigQuery非常陌生 我想根据希望将天转换为周的日期和月份来解析时间戳(yyyy/mm/dd:hh:mm:ss)。 我没有找到任何BigQuery函数可以这样做 因此,我想知道是否有一种方法可以让我编写一个UDF,然后在BigQuery查询中访问它这里有两个问题,所以有两个答案: BigQuery是否支持自定义项:。(当我第一次回答这个问题时,它没有。) 即使没有UDF,日期匹配仍然是可行的。BigQuery有一个时间解析函数,PARSE\u UTC\u USEC,它需要以YYY
yyyy/mm/dd:hh:mm:ss
)。
我没有找到任何BigQuery函数可以这样做
因此,我想知道是否有一种方法可以让我编写一个
UDF
,然后在BigQuery查询中访问它这里有两个问题,所以有两个答案:
- BigQuery是否支持自定义项:。(当我第一次回答这个问题时,它没有。)
- 即使没有UDF,日期匹配仍然是可行的。BigQuery有一个时间解析函数,
,它需要以PARSE\u UTC\u USEC
的形式输入。您需要使用YYYY-MM-DD hh:MM:ss
将日期转换为正确的格式。完成后,REGEXP\u REPLACE
会将事情分为几周,您可以根据这一点进行分组。因此,将所有这些结合在一起,如果您的表有一个名为UTC\u USEC\u TO\u WEEK
的列,您可以通过以下方式获得每周计数timestamp
请注意,SELECT week, COUNT(week) FROM (SELECT UTC_USEC_TO_WEEK( PARSE_UTC_USEC( REGEXP_REPLACE( timestamp, r"(\d{4})/(\d{2})/(\d{2}):(\d{2}):(\d{2}):(\d{2})", r"\1-\2-\3 \4:\5:\6")), 0) AS week FROM mytable) GROUP BY week;
这里是一周中哪一天用作“开始”的参数;我用的是星期天,但对于“商务”,使用0
(即星期一)可能更有意义1
为了以防万一,文档中的选项非常有用。BigQuery中的自定义项支持现在就在这里 下面是一些将字符串时间说明符转换为JavaScript日期对象的代码,并从中提取一些属性;有关JS日期可用属性的信息,请参阅 查询(用表替换嵌套的select): 代码:
谢谢@Craig,我刚刚完成了我对Bigquery的第一次分析,man Query非常快。关于a)缺少UDF支持b)对联接的限制c)加载时间问题BigQuery现在有UDF支持:虽然此链接可能会有所帮助,但您能否在问题中添加一些相关信息,以便在链接消失时信息仍然保留?谢谢,更新了带有查询和代码示例的注释。UDF现在可用:
SELECT day_of_week, month_date
FROM parseDate(select '2015/08/01 12:00:00' as date_string);
function parsedate(row, emit) {
var d = new Date(row.date_string);
emit({day_of_week: d.getDay(),
month_date: d.getDate()});
}
bigquery.defineFunction(
'parseDate', // Name of the function exported to SQL
['date_string'], // Names of input columns
[{'name': 'day_of_week', 'type': 'integer'},
{'name': 'month_date', 'type': 'integer'}],
parsedate
);