![](/img/trans.png)
[英]Google BigQuery query in Python works when using result(), but Permission issue when using to_dataframe()
[英]Timestamp query issue when using Google Data Studio community connector with BigQuery
我遇到一个问题,Google Data Studio 将错误的时间戳数据发送到我的社区连接器,因此当我尝试过滤日期时,出现错误。 我有两个 BigQuery TIMESTAMP
类型的字段(名为timestamp
和created_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.