gpt4 book ai didi

amazon-redshift - Google 数据洞察中日期维度的 COUNT DISTINCT 聚合不准确

转载 作者:行者123 更新时间:2023-12-03 14:38:51 24 4
gpt4 key购买 nike

当我使用 上的日期维度聚合 Google 数据洞察中的值时PostgreSQL 连接器 ,我看到了错误的行为。症状是执行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 连接器 正在连接到 亚马逊 Redshift ( jdbc:postgresql://*******.eu-west-1.redshift.amazonaws.com ) 使用以下自定义查询:

SELECT
userid,
submissionid,
date
FROM mytable

解决方法

如果我停止使用默认 date日期维度的字段并直接在 SQL 查询 ( date_byweek ) 中聚合我自己的日期,即 COUNT(DISTINCT)聚合按预期工作:

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

虽然这个变通方法解决了我眼前的问题,但它很糟糕,因为我错过了 Data Studio 提供的所有日期功能(层次结构钻取、日期范围过滤等)。更不用说降低我对产品中其他可能存在“问题”的信心了😞

如何繁殖

如果您想重新创建问题,请使用以下数据作为 PostgreSQL 数据源应该足够了:
> SELECT * FROM mytable
userid submissionid
-------- -------------
1 1
2 2
1 3
1 4
3 5

> COUNT(DISTINCT userid) -- ERROR: Returns 5 when data source is PostgreSQL
> COUNT(DISTINCT userid) -- EXPECTED: Returns 3 when data source is CSV (exported from same PostgreSQL query above)

最佳答案

我很高兴地报告,截至 2020 年 9 月 17 日,有一个解决方法。
DataStudio 添加了 DATETIME_TRUNC函数(参见此处 https://support.google.com/datastudio/answer/9729685? ),它允许您添加一个自定义字段,将原始日期截断为您想要的任何粒度,而不会导致明显的错误。
尝试在报告中设置显示粒度仍然会导致错误(即,您仍将设置 Oct 1 2020 12:00:00 而不是 Oct 2020)。
这可以通过创建一个 SECOND 自定义字段来解决,它只返回第一个,然后您可以将 IT 添加到报表中,更改显示粒度,一切正常。

关于amazon-redshift - Google 数据洞察中日期维度的 COUNT DISTINCT 聚合不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56431676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com