Lorsque vous essayez d'insérer des données dans GoogleBigQuery, nous obtenons l'erreur suivante:
table.write: Limites de débit dépassées: trop d'opérations de mise à jour de table pour cette table. Pour plus d'informations, consultez https://cloud.google.com/bigquery/troubleshooting-errors a> (code d'erreur: rateLimitExceeded)
Selon la documentation, je dépasse peut-être l'une des valeurs ci-dessous
Comment savoir quels critères sont dépassés par ma candidature?
J'ai déjà exploré d'autres solutions sur le Web et aucune n'a fonctionné.
3 Réponses :
Une chose que vous pouvez vérifier est votre page Quotas (Menu de navigation -> IAM & Admin -> Quotas), puis sous le Service, vous pouvez sélectionner uniquement l'API BigQuery pour voir si vous atteignez un quota d'API BQ. Sinon, vous atteignez probablement la "Limite de mise à jour quotidienne des tables de destination - 1 000 mises à jour par table et par jour"
Vous atteignez la limite de mise à jour de la table. Cela signifie que vous soumettez de nombreuses opérations qui modifient le stockage de votre table (insérer, mettre à jour ou supprimer) . Gardez à l'esprit que cela inclut également les tâches de chargement, les DML ou les requêtes avec les tables de destination. Étant donné que le quota se reconstitue périodiquement, vous devrez attendre quelques minutes pour réessayer, mais en prenant soin de votre quota de mise à jour de table afin de ne plus avoir cette erreur.
Si vous insérez des lignes dans de nombreuses opérations au lieu de quelques-unes, envisagez d'utiliser Inserts de diffusion en continu à la place.
Permettez-moi de reproduire l'erreur avec un cas réel que j'ai reçu d'un coéquipier:
CREATE TEMP TABLE `mappings` AS SELECT * FROM UNNEST( [STRUCT('US' AS abbr, 'US%' AS long), ('TW', 'ASIA-EAST1%'), ('JP', 'ASIA-NORTHEAST2%' # add mappings )]); UPDATE temp.bucket_locations SET bucket_location = abbr FROM mappings WHERE UPPER(bucket_location) LIKE long
Limites de débit dépassées: trop d'opérations de mise à jour de table pour cette table
La solution pour ce cas est d'éviter de faire autant de mises à jour. Au lieu de cela, nous ne pouvons en faire qu'un, en combinant tous les mappages ensemble:
# create the table CREATE TABLE temp.bucket_locations AS SELECT 'ASIA-EAST1' bucket_location UNION ALL SELECT 'ASIA-NORTHEAST2' bucket_location; #update several times UPDATE temp.bucket_locations SET bucket_location = "US" WHERE UPPER(bucket_location) LIKE "US%"; UPDATE temp.bucket_locations SET bucket_location = "TW" WHERE UPPER(bucket_location) LIKE "ASIA-EAST1%"; UPDATE temp.bucket_locations SET bucket_location = "JP" WHERE UPPER(bucket_location) LIKE "ASIA-NORTHEAST1%"; UPDATE temp.bucket_locations SET bucket_location = "HK" WHERE UPPER(bucket_location) LIKE "ASIA-EAST2%"; UPDATE temp.bucket_locations SET bucket_location = "JP" WHERE UPPER(bucket_location) LIKE "ASIA-NORTHEAST2%"; UPDATE temp.bucket_locations SET bucket_location = "KR" WHERE UPPER(bucket_location) LIKE "ASIA-NORTHEAST3%"; UPDATE temp.bucket_locations SET bucket_location = "IN" WHERE UPPER(bucket_location) LIKE "ASIA-SOUTH1%"; UPDATE temp.bucket_locations SET bucket_location = "SG" WHERE UPPER(bucket_location) LIKE "ASIA-SOUTHEAST1%"; UPDATE temp.bucket_locations SET bucket_location = "AU" WHERE UPPER(bucket_location) LIKE "AUSTRALIA%"; UPDATE temp.bucket_locations SET bucket_location = "FI" WHERE UPPER(bucket_location) LIKE "EUROPE-NORTH1%"; UPDATE temp.bucket_locations SET bucket_location = "BE" WHERE UPPER(bucket_location) LIKE "EUROPE-WEST1%"; UPDATE temp.bucket_locations SET bucket_location = "GB" WHERE UPPER(bucket_location) LIKE "EUROPE-WEST2%"; UPDATE temp.bucket_locations SET bucket_location = "DE" WHERE UPPER(bucket_location) LIKE "EUROPE-WEST3%"; UPDATE temp.bucket_locations SET bucket_location = "NL" WHERE UPPER(bucket_location) LIKE "EUROPE-WEST4%"; UPDATE temp.bucket_locations SET bucket_location = "CH" WHERE UPPER(bucket_location) LIKE "EUROPE-WEST6%"; UPDATE temp.bucket_locations SET bucket_location = "CA" WHERE UPPER(bucket_location) LIKE "NORTHAMERICA%"; UPDATE temp.bucket_locations SET bucket_location = "BR" WHERE UPPER(bucket_location) LIKE "SOUTHAMERICA%";
Le millier de mises à jour par table et par jour n'est-il pas évident à cause de «trop d'opérations de mise à jour de table»?