Случай, который вы описываете, требует наличия двухуровневого разбиения, которое пока не поддерживается
Вы можете создать таблицу разделов столбцов https://cloud.google.com/bigquery/docs/creating-column-partitions
И после этого постройте это значение столбца по мере необходимости, которое использовалось для разбиения перед вставкой - но в этом случае вы потеряли значение _PARTITIONTIME
На основании дополнительных разъяснений - у меня была похожая проблема - и я решил написать приложение на python, которое будет читать исходную таблицу (здесь важно чтение - не запрос - поэтому оно будет бесплатным) - разделение данных на основе ваших критериев и потока Для данных (простых - но не бесплатных) или для создания файлов json / csv и загрузки их в целевые таблицы (которые также будут бесплатными, но с некоторыми ограничениями по количеству этих операций) - потребуется дополнительная обработка кода / исключений, если вы идете вторым путем.
Вы также можете сделать это через DataFlow - это будет определенно дороже, чем пользовательское решение, но потенциально более надежно.
Примеры для библиотеки Python gcloud
client = bigquery.Client(project="PROJECT_NAME")
t1 = client.get_table(source_table_ref)
target_schema = t1.schema[1:] #removing first column which is a key to split
ds_target = client.dataset(project=target_project, dataset_id=target_dataset)
rows_to_process_iter = client.list_rows( t1, start_index=start_index, max_results=max_results)
# convert to list
rows_to_process = list(rows_to_process_iter)
# doing something with records
# stream records to destination
errors = client.create_rows(target_table, records_to_stream)