Вы можете попробовать разбить вашу таблицу T на 2 меньшие таблицы T1 и T2, затем выполнить 4 объединения для каждой из меньших таблиц T1: T1, T1: T2, T2: T1, T2: T2, а затем объединить результаты.Это будет эквивалентно присоединению T к себе.Если это не помогло, попробуйте разбить его на таблицы меньшего размера.
В качестве альтернативы установите maximumBillingTier
на более высокое значение https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs.
configuration.query.maximumBillingTier - Limitsуровень биллинга для этой работы.Запросы, использующие ресурсы за пределами этого уровня, не будут выполняться (без взимания платы).Если не указано, для этого проекта будет задано значение по умолчанию.
Если используется Java, его можно установить в JobQueryConfiguration
.Это свойство конфигурации в настоящий момент не поддерживается в консоли пользовательского интерфейса.
Чтобы разделить таблицу, вы можете использовать функцию FARM_FINGERPRINT в BigQuery.Например, первая часть будет иметь фильтр:
where mod(abs(farm_fingerprint(id)), 10) < 5
А вторая часть будет иметь фильтр:
where mod(abs(farm_fingerprint(id)), 10) >= 5