繁体   English   中英

将 Google Data Studio 社区连接器与 BigQuery 结合使用时的时间戳查询问题

[英]Timestamp query issue when using Google Data Studio community connector with BigQuery

我遇到一个问题,Google Data Studio 将错误的时间戳数据发送到我的社区连接器,因此当我尝试过滤日期时,出现错误。 我有两个 BigQuery TIMESTAMP类型的字段(名为timestampcreated_at ),它们都未经修改地传递到我的社区连接器。 一旦我将日期过滤器添加到报告中(以便进行时间序列或常规过滤),如下所示:

在此处输入图像描述

然后我来自连接器的查询(在我的 BigQuery 项目历史记录中查看)开始像这样失败:

Could not cast literal "20200825" to type TIMESTAMP at [1:677]

BigQuery 中的查询看起来像这样:

SELECT t0.created_at, SUM(t0.sum_metric) AS t0_qt_1z4br3iwbc FROM (SELECT field1, field2, field3) from data_name.table_name where user_identifier in (2)) AS t0 WHERE (t0.created_at >= '20200825' AND t0.created_at <= '20200831') GROUP BY t0.created_at ORDER BY t0.created_at ASC;

这真的感觉像是关于 BigQuery 的社区连接器的错误。 有什么办法解决这个问题吗? 我只是做错了什么我没有看到吗?

好的,我解决了这个问题。 在您的社区连接器中,您需要将其添加到您的配置中:

config.setDateRangeRequired(true);

这将在您的 getData 请求中发送一个 startDate 和 endDate 参数(默认为 28 天)。 像这样在getData()中访问它们:

var startDate = request.dateRange.startDate;
var endDate = request.dateRange.endDate

然后根据需要在您的查询中使用它们。

作为旁注,如果您在 Google Data Studio 中存储timestamp字段并制作社区连接器,则需要设置计算字段,以便报告适当地处理它(显示人类可读的日期而不是时间戳). 我首先将时间戳字段作为字符串从数据库中读取出来,例如: STRING(timestamp, 'UTC') AS timestamp ,然后使用该值创建一个维度。 这是在如下模式中完成的(如果不同,请使用适合您的领域的解析):

fields.newDimension()
  .setId('date_timestamp')
  .setName('date_timestamp')
  .setDescription('Timestamp as a date.')
  .setFormula("TODATE($timestamp, '%Y-%m-%d %H:%M:%S%z', '%Y%m%d')")
  .setType(types.YEAR_MONTH_DAY)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM