Использование UNNEST в пользовательском запросе Postres в Google Data Studio - PullRequest
0 голосов
/ 16 января 2020

У меня есть таблица с несколькими значениями, сохраненными в массиве в одном столбце. (Я знаю, что это не нормализованная / оптимальная структура базы данных.) Я пытаюсь написать запрос, который может создать строки для каждого значения в массиве. Приведенный ниже запрос работает для меня в Таблице, но не в Google Data Studio (я использую пользовательский запрос с соединителем PostgreSQL). Существуют ли какие-либо ограничения / другие требования к синтаксису при использовании UNNEST в Data Studio?

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

1 Ответ

1 голос
/ 16 января 2020

Ваш внутренний запрос, вероятно, должен иметь боковое соединение:

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, принадлежащим этой строке.

...