2013-07-11 15 views
8

Mam schemat, który zawiera wiele powtarzających się pól, które nie są zagnieżdżone.Wywoływanie wielu powtarzających się pól w BigQuery

Próbuję kwerendy produkt poprzeczny, ale pojawia się błąd: „nie może zapytać produkt Krzyż powtarzanych pól ...”

Jeśli kwerendy tylko 2 powtarzanych pól, mogę wyprostować jeden z nich. Jednak jestem zainteresowany zapytaniami o więcej niż 2 powtarzające się pola i nie mogę zrozumieć, jak działa składnia FLATTEN.

na przykład, że struktura tabela: A1 płyta (wielokrotne) a1.b1, całkowita A2 płyta (wielokrotne) a2.b1, całkowita A3 rekordu (wielokrotne) a3.b1 , całkowitą

Chcę zapytać: wybrać (*) na karcie

Odpowiedz

13

można użyć podselekcji zagnieżdżony wewnątrz FLATTEN. Wymaga to dodatkowego nagłówka wokół instrukcji select. (Składnia jest niestety brzydka). na przykład

SELECT 
    ... 
FROM (
    FLATTEN((
     SELECT 
     ... 
     FROM (
      FLATTEN((
      SELECT 
       ... 
      FROM 
       table), 
      f1) 
     ) 
     ), 
     f2) 
    ) 
) 
+0

działa jak marzenie! Chciałbym określić pola do wybrania tylko raz, w najbardziej wewnętrznym wyborze i napisać zaznacz * we wszystkich innych zagnieżdżonych zaznaczeniach. Ale nie mogę podać klauzuli order by, ponieważ zamówienie wymaga, aby pole pojawiło się w wybranych polach. – Lior

7

Jeśli nie trzeba robić nic konkretnego wewnątrz wewnętrzna wybierzesz, możesz po prostu użyć

(FLATTEN(FLATTEN(table, a1), a2))

+0

To też działa dobrze. –

Powiązane problemy