UPDATE:Dla wyjaśnienia krok po kroku, w jaki sposób to działa, zobaczBigQuery flattens when using field with same name as repeated fieldzamiast.
Aby odpowiedzieć na pytanie tytułowe: COUNT (*) w BigQuery jest zawsze dokładne.
Ograniczeniem jest to, że w SQL COUNT (*) i COUNT (kolumna) mają semantycznie różne znaczenia - a przykładowe zapytanie może być interpretowane na różne sposoby.
Patrz: http://www.xaprb.com/blog/2009/04/08/the-dangerous-subtleties-of-left-join-and-count-in-sql/
Nie mają tej kwerendy próbki:
select user.userid, count(email.subject)
from user
inner join email on user.userid = email.userid
group by user.userid;
To zapytanie okazuje się być ambigous, a autor artykułu zmienia się na bardziej wyraźnej jednego, dodając ten komentarz:
Ale co, jeśli nie to oznacza autor zapytania? Nie ma sposobu, aby naprawdę wiedzieć. Istnieje kilka możliwych znaczeń zamierzonych dla zapytania , a istnieje kilka różnych sposobów napisania zapytania do wyraźniej wyrazić te znaczenia. Ale pierwotne zapytanie jest niejednoznaczne z kilku powodów. I każdy, kto przeczyta to zapytanie, później skończy się odgadywaniem, co znaczył oryginalny autor. „ myślę, że mogę bezpiecznie zmienić to ...”
UPDATE:Dla wyjaśnienia krok po kroku, w jaki sposób to działa, zobaczBigQuery flattens when using field with same name as repeated fieldzamiast.
Pełne zapytania, proszę? Prawdopodobnie wybuchające sprzężenie, lub zagnieżdżone struktury są spłaszczone? –
Przepraszam, powinienem był to zrobić natychmiast. Tak jak mówiłem, 70000 to poprawna liczba, połączenie nie eksploduje. Jeśli zagnieżdżone połączenia są spłaszczane, to w jaki sposób? – oulenz