Próbuję uruchomić kwerendę w BigQuery, która ma dwa selekcje podrzędne i sprzężenie, ale nie mogę go uruchomić. Tym, co robię jako obejście, jest samodzielne uruchamianie podselekcji, a następnie zapisywanie ich jako tabel, a następnie wykonywanie innego zapytania z łączeniem, ale myślę, że powinienem być w stanie to zrobić za pomocą jednego zapytania.Google BigQuery prosi o DOŁĄCZ DO KAŻDEGO, ale już go używam.
Dostaję błąd:
Table too large for JOIN. Consider using JOIN EACH. For more details, please see https://developers.google.com/bigquery/docs/query-reference#joins
ale jestem już przy użyciu dołączyć każdy. Próbowałem używać łączenia krzyżowego i używania grupy przez każdą z nich, ale te dają mi różne błędy. Inne pytania dotyczące Stack Overflow na ten temat nie pomagają, jeden mówi, że był to błąd w BigQuery, a drugi to ktoś, kto używa "cross join each" ...
Poniżej znajduje się mój sql, wybacz mi, jeśli jest pełny błędów, ale myślę, że to powinno działać:
select
t1.device_uuid,
t1.session_uuid,
t1.nth,
t1.Diamonds_Launch,
t2.Diamonds_Close
from (
select
device_uuid,
session_uuid,
nth,
sum(cast([project_id].[table_id].attributes.Value as integer)) as Diamonds_Launch
from [project_id].[table_id]
where name = 'App Launch'
and attributes.Name = 'Inventory - Diamonds'
group by device_uuid, session_uuid, nth
) as t1
join each (
select
device_uuid,
session_uuid,
nth,
sum(cast([project_id].[table_id].attributes.Value as integer)) as Diamonds_Close
from [project_id].[table_id]
where name = 'App Close'
and attributes.Name = 'Inventory - Diamonds'
group by device_uuid, session_uuid, nth
) as t2
on t1.device_uuid = t2.device_uuid
and t1.session_uuid = t2.session_uuid
Dzięki Pentium10, myślałem, że nie powinno być sposobem zrób to za pomocą jednej instrukcji SELECT, ale nie mogłem tego rozgryźć. – Davidjb