我有一个由Google管理的Gmail日志的BigQuery数据集。 Google将电子邮件日志流式传输到一个名为daily_的表,该表几乎是实时的,并按天划分。日志中记录着指示某些邮件何时触发邮件路由规则的记录,我想选择这些记录并计算执行带有时间差的路由规则所需的时间。我使用SQL成功计算了时差,将其保存为视图,现在想在DataStudio中对其进行图形处理。但是,每当我添加带有日期范围维度的时间过滤器时,都会出现以下错误:
用户配置错误
此数据源配置不正确。
查询返回错误。
无效的时间戳:“-”错误ID:3d446739
我首先想到的是,也许在某些行中,分区_TABLE_SUFFIX字段为空白或为空。但是,在运行“选择不同的_TABLE_SUFFIX”并查看结果后,我不再相信这种情况,它们都具有日期值。
任何想法可能是什么原因造成的?值得一提的是,当我将视图作为数据源添加到DataStudio时,它会正确选择数据类型作为日期。 Google使用正式的YYYYMMDD将值存储到_TABLE_SUFFIX中,这正是DataStudio在添加源时看到的值。
最糟糕的是,我的一位同事正在使用相同的数据集作为源(尽管具有不同但配置相似的视图),而他的工作却很好,而我的却没有。任何帮助表示赞赏。
这是我创建并想要在Data Studio中绘制图形的SQL视图:
SELECT
_TABLE_SUFFIX as pt,
MIN(DATETIME(timestamp_micros(event_info.timestamp_usec), "America/New_York")) as time_before,
MAX(DATETIME(timestamp_micros(event_info.timestamp_usec), "America/New_York")) as time_after,
DATETIME_DIFF(
MAX(DATETIME(timestamp_micros(event_info.timestamp_usec), "America/New_York")),
MIN(DATETIME(timestamp_micros(event_info.timestamp_usec), "America/New_York")),
SECOND) as timediff,
message_info.num_message_attachments,
message_info.source.address as sender,
dest.address as recipeint,
message_info.rfc2822_message_id,
message_info.subject
FROM
`g-suite-logs.gmail_logs.daily_*` as t1,
UNNEST ( message_info.destination ) as dest,
UNNEST ( message_info.triggered_rule_info ) as rule
WHERE rule.rule_name = "Route to third party MTA" OR rule.rule_name = "Receive back from third party MTA"
GROUP BY
pt,
message_info.rfc2822_message_id,
message_info.source.address,
dest.address,
message_info.subject,
message_info.num_message_attachments
ORDER BY pt,rfc2822_message_id
我还怀疑UNNEST可能正在向_TABLE_SUFFIX引入一些空值,但不再怀疑是这种情况。