Агрегация / сбор массивов - нужно явно указывать поля структуры? - PullRequest
1 голос
/ 04 июля 2019

Итак, в BQ standardSQL, используя ARRAY_AGG, вам всегда нужно указывать поля struct? Или это может быть динамическим результатом (например, *)

например, memberRoleId может иметь несколько членств (то есть повторяет memberRoleId) в таблице Memberships, я хочу создать массив всех значений в виде структуры без указания списка, поскольку это длинная широкая таблица!

Я пытаюсь собрать все строки по общему идентификатору в массив, но я хочу легко включить все поля в строку без явного определения - возможно ли это?

Из этого ...

      MemberRoleId,
      ARRAY_AGG (
        STRUCT( 
           MemberRoleId, MembershipId, MemberPartyId, MemberRoleId......     
        )
      )
    FROM
      Memberships
    GROUP BY
      MemberRoleId

что-то вроде ниже с * просто говоря, что я хочу, чтобы все столбцы строк, совпадающие с этим сгруппированным MemberRoleId, были в структуре

      MemberRoleId,
      ARRAY_AGG (
        STRUCT( 
           * 
        )
      )
    FROM
      Memberships
    GROUP BY
      MemberRoleId

MemberRoleId, [{MemberRoleId, х, х, х, х, х, х, х}, {MemberRoleId, у, у, у, у, у, у, у}]

но не обязательно явно определять структурную схему для массива agg ....

1 Ответ

2 голосов
/ 04 июля 2019

Ниже для BigQuery Standard SQL

Вы можете использовать ниже для достижения своей цели

SELECT
  MemberRoleId,
  ARRAY_AGG (t)
FROM
  Memberships t
GROUP BY
  MemberRoleId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...