Google Data Studio中带有日期维度的COUNT DISTINCT聚合不正确

时间:2019-06-03 17:02:17

标签: amazon-redshift google-data-studio

当我在 PostgreSQL连接器上使用日期维度在Google Data Studio中汇总值时,我看到了错误的行为。症状是执行COUNT(DISTINCT)返回的值与COUNT()相同:

incorrect count value for userid when connector is postgres

我的理论是,这与计数已经发生之后发生的数据聚合有关。如果我尝试对导出的 CSV 中的相同数据进行完全相同的汇总,而不是直接从 PostgreSQL连接器 数据源中进行相同的汇总,则不会出现此问题复制:

correct count value for userid when connector is a csv file

我的 PostgreSQL连接器 通过以下自定义查询连接到 Amazon Redshift jdbc:postgresql://*******.eu-west-1.redshift.amazonaws.com):

SELECT
  userid,
  submissionid,
  date
FROM mytable

解决方法

如果我停止在 Date Dimension 中使用默认的date字段,并直接在SQL查询(date_byweek)中汇总自己的日期,则{{1} }聚合按预期工作:

COUNT(DISTINCT)

尽管此解决方法可以解决我的迫在眉睫的问题,但它很烂,因为我错过了Data Studio提供的所有日期功能(层次结构深化日期范围过滤等)。更不用说降低我对产品中其他可能“笨拙”的信心了


如何复制

如果您想重新创建问题,则使用以下数据作为 PostgreSQL 数据源就足够了:

SELECT
  userid,
  submissionid,
  to_char(date,'YYYY-IW') as date_byweek
FROM mytable

3 个答案:

答案 0 :(得分:1)

我很高兴地报告,截至2020年9月17日,有一种解决方法。

DataStudio添加了DATETIME_TRUNC函数(请参见此处https://support.google.com/datastudio/answer/9729685?),该函数允许您添加一个自定义字段,该字段将原始日期截断为所需的任意粒度,而不会引起明显的错误。

尝试在报告中设置显示粒度仍然会导致该错误(即,您仍将设置2020年10月1日12:00:00而不是2020年10月)。

这可以通过创建一个 SECOND 自定义字段来解决,该字段仅返回第一个,然后可以将 IT 添加到报表中,更改显示粒度,然后一切都会好的。

答案 1 :(得分:0)

我在MySQL连接器上也有同样的问题。但是,当我将DB中的日期字段格式从DATETIME(YYYY-MM-DD HH:MM:SS)更改为INT(Unixtimestamp)时,问题就解决了。在将此表连接到Googe Datastudio之后,我将此字段的类型设置为Date(YYYYMMDD),并且按预期进行了所有工作。希望对您有帮助:)

答案 2 :(得分:0)

在这个 Google 论坛中,Damien Choizit 提供了一个奇特的解决方案,该解决方案涉及将您的数据源与其自身相结合。对我来说效果很好。

https://support.google.com/datastudio/thread/13600719?hl=en&msgid=39060607

它说:

<块引用>

我想出了一个解决方案:我使用混合数据将同一数据源与相应的连接键连接两次,然后我只在左侧指定了一个数据范围维度并选择了我想要的列CTD 聚合为右侧的“维度”(而非指标!)。