【问题标题】:Using UNNEST in a custom Postres Query in Google Data Studio在 Google Data Studio 的自定义 Postres 查询中使用 UNNEST
【发布时间】:2020-01-16 07:15:10
【问题描述】:

我有一个表,其中有多个值保存在一个数组中的一列中。 (我知道这不是规范化/最佳数据库结构。)我正在尝试编写一个查询,该查询可以为数组中的每个值创建行。下面的查询在 Tableau 中适用于我,但不适用于 Google Data Studio(我正在使用带有 PostgreSQL 连接器的自定义查询)。在 Data Studio 中使用 UNNEST 时是否有任何限制/不同的语法要求?

SELECT
    e.name as event_name,
    e.date as event_date,
    l.full_name as leader_name,
    p.full_name as participant_name

    FROM
            (
            SELECT
                event_id,
                user_id,
                UNNEST(participants_ids)::INTEGER as participant_id 
                from event_reports 
            ) r

        LEFT JOIN events e ON r.event_id = e.id
        LEFT JOIN users l ON r.user_id = l.id
        LEFT JOIN users p ON r.participant_id = p.id

【问题讨论】:

    标签: postgresql google-data-studio


    【解决方案1】:

    你的内部查询应该有一个横向连接:

    SELECT e.event_id,
           e.user_id,
           p.participant_id
    FROM event_reports AS e
         CROSS JOIN
         LATERAL unnest(e.participants_ids) AS p(as participant_id)
    

    使用横向联接,您可以从右侧联接的左侧引用某些内容。交叉连接将每个 event_reports 行与属于该行的 rach 参与者 ID 组合在一起。

    【讨论】:

    • 感谢您的回复。查看横向连接的文档,我相信您是正确的,这就是我正在寻找的。我尝试使用您建议的查询,但没有奏效。不过,我认为这更多是 Data Studio 的问题,而不是查询。我尝试将查询剥离到 SELECT UNNEST(r.participants_ids) FROM event_reports r,但即使是该查询在放入 Data Studio 报告时也返回了错误。查询成功,但报告返回错误。
    • 如果你能提供有关“没用”的详细信息,我愿意提供帮助。
    • 谢谢!同样,我在 Data Studio 中使用他们的 Postgres 连接器上的自定义查询,我怀疑这可能只是一个问题。我正在使用查询:SELECT UNNEST(participants_ids) as id FROM event_reports 查询连接似乎成功,并为我提供了一个带有列 id | 的数据源。记录计数。但是在使用 id 指标创建带有表的报表时,报表表返回错误消息:“System Error Data Studio 遇到系统错误。抱歉,我们遇到错误,无法完成您的请求。错误 ID:d63f4148 :
    猜你喜欢
    • 2020-04-12
    • 1970-01-01
    • 2020-06-04
    • 2015-12-07
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 2020-02-17
    • 2020-11-07
    相关资源
    最近更新 更多