J'ai trouvé un bug/bug dans bigquery. Nous avons obtenu un tableau basé sur les données statistiques bancaires sous le starschema.net:clouddb:bank.Banks_token
Si j'exécute la requête suivante:
SELECT count(*) as totalrow,
count(DISTINCT BankId ) as bankidcnt
FROM bank.Banks_token;
Et j'obtiens le résultat suivant:
Row totalrow bankidcnt
1 9513 9903
Mon problème est que si j'ai 9513row, comment pourrais-je obtenir 9903row, soit 390row de plus que le nombre de lignes dans le tableau.
Dans BigQuery, COUNT DISTINCT est une approximation statistique pour tous les résultats supérieurs à 1000.
Vous pouvez fournir un deuxième argument facultatif pour indiquer le seuil auquel les approximations sont utilisées. Ainsi, si vous utilisez COUNT (DISTINCT BankId, 10000) dans votre exemple, vous devriez voir le résultat exact (car le nombre réel de lignes est inférieur à 10000). Notez cependant que l'utilisation d'un seuil plus élevé peut être coûteuse en termes de performances.
Voir la documentation complète ici: https://developers.google.com/bigquery/docs/query-reference#aggfunctions
MISE À JOUR 2017:
Avec BigQuery #standardSQL COUNT(DISTINCT)
est toujours exacte. Pour des résultats approximatifs, utilisez APPROX_COUNT_DISTINCT()
. Pourquoi utiliser des résultats approximatifs? Voir cet article .
J'ai utilisé EXACT_COUNT_DISTINCT () comme moyen d'obtenir le nombre unique exact. C'est plus propre et plus général que COUNT (valeur DISTINCT, n> numRows)
Trouvé ici: https://cloud.google.com/bigquery/query-reference#aggfunctions