首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >bigquery UDF支持

bigquery UDF支持
EN

Stack Overflow用户
提问于 2012-07-26 15:30:03
回答 2查看 1.3K关注 0票数 1

我是谷歌BigQuery的新手

我想解析基于日期和月份的时间戳(yyyy/mm/dd:hh:mm:ss),希望将天存储为周。我没有找到任何这样做的BigQuery函数。

因此,我想知道是否有一种方法可以编写UDF,然后在BigQuery查询中访问它

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-27 14:12:46

这里有两个问题,所以有两个答案:

  • BigQuery 不支持UDF:docs。(我第一次回答这个问题时并没有。)
  • 即使没有UDF,日期分类仍然是可行的。BigQuery有一次解析函数PARSE_UTC_USEC,它需要YYYY-MM-DD hh:mm:ss格式的输入。您需要使用REGEXP_REPLACE将您的日期转换为正确的格式。一旦你这样做了,UTC_USEC_TO_WEEK就会把事情分成几周,你可以按此分组。因此,如果您的表有一个名为timestamp的列,那么将所有这些结合在一起,您可以通过如下方式获得每周的计数

SELECT week,COUNT(week) FROM (SELECT UTC_USEC_TO_WEEK( PARSE_UTC_USEC( REGEXP_REPLACE( timestamp,SELECTr"\1-\2-\3 \4:\5:\6")),0)作为mytable中的周)逐周分组;

请注意,这里的0是用来表示一周中哪一天作为“开始”的参数;我用的是星期天,但对于“业务”,使用1 (即星期一)来做事情可能更有意义。

如果您需要的话,文档中的section on timestamp functions是很有用的。

票数 2
EN

Stack Overflow用户

发布于 2015-09-24 05:33:24

现在支持BigQuery中的自定义函数了!https://cloud.google.com/bigquery/user-defined-functions

下面是将字符串时间说明符转换为JavaScript Date对象并从中提取一些属性的代码;有关JS Date可用的属性的信息,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

查询(将嵌套的select替换为您的表):

代码语言:javascript
运行
复制
SELECT day_of_week, month_date
FROM parseDate(select '2015/08/01 12:00:00' as date_string);

代码:

代码语言:javascript
运行
复制
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
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11664449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档