谷歌数据洞察之间的时间

时间:2021-02-28 23:26:05

标签: time google-data-studio

我有两个字段:

<头>
ACCEPTED_DRIVER_HOUR DELIVERY_HOUR
18:42:01 18:49:00

在谷歌数据洞察中,这两个字段显示为Text字段,所以我想做的是:

SUM(ACCEPTED_DRIVER_HOUR) - SUM (DELIVERY_HOUR)

通过这种方式,我可以了解司机交付和订购所需的时间。

问题是 Google Data Studio 说我不能这样做,因为该字段是 Text,如果我更改为 Number,它会显示 NULL 因为数字之间有 :;如果我尝试更改为日期时间,这是不可能的。

我已经尝试使用 CAST 创建新字段,但它显示相同的错误 (NULL)

1 个答案:

答案 0 :(得分:0)

0) 总结

使用 EITHER #1 或 #2;如果 #1 (DATETIME_DIFF) 似乎不起作用,请尝试 #2 (CAST & RegEx)

1) DATETIME_DIFF

可以实现的一种方法是创建日期时间字段,然后使用DATETIME_DIFF 函数查找SECOND 中的差异,然后可以将类型设置为Duration (sec.);它可以在单个计算字段中实现,如下所示,其中使用的日期是 1970 年 1 月 1 日(可以根据需要随意更改日期,但请确保下面的第 2 行和第 3 行使用相同的日期):

1.1) 计算字段(公式)

DATETIME_DIFF(
PARSE_DATETIME("%F%T", CONCAT("1970-01-01 ", DELIVERY_HOUR)), 
PARSE_DATETIME("%F%T", CONCAT("1970-01-01 ", ACCEPTED_DRIVER_HOUR)), 
SECOND)

1.2) 计算字段(类型)

Numeric > Duration (sec.)

1.3) 计算字段(聚合)

  • 默认设置为 SUM,但可以根据需要进行更改,例如AVG

Editable Google Data Studio Report 和 GIF 详细说明:

2) CAST & RegEx

2.1) 计算字段(公式)

(CAST(REGEXP_EXTRACT(DELIVERY_HOUR, "^([^:]+):") AS NUMBER)*60*60 +
CAST(REGEXP_EXTRACT(DELIVERY_HOUR, ":([^:]+):") AS NUMBER)*60 +
CAST(REGEXP_EXTRACT(DELIVERY_HOUR, ":(\\d+)$") AS NUMBER)) -
(CAST(REGEXP_EXTRACT(ACCEPTED_DRIVER_HOUR, "^([^:]+):") AS NUMBER)*60*60 +
CAST(REGEXP_EXTRACT(ACCEPTED_DRIVER_HOUR, ":([^:]+):") AS NUMBER)*60 +
CAST(REGEXP_EXTRACT(ACCEPTED_DRIVER_HOUR, ":(\\d+)$") AS NUMBER))

2.2) 计算字段(类型)

Numeric > Duration (sec.)

2.3) 计算字段(聚合)

  • 默认设置为 SUM,但可以根据需要进行更改,例如AVG

Added a New Page to the Editable Google Data Studio Report 和用于演示的 GIF: