Для каждого раздела мы загружаем файлы в большие запросы каждые 3 минуты, и каждый файл имеет размер около 200 МБ.(.Gz).Иногда я получаю дублирование и не знаю почему.Я уже проверил, что входной файл содержит данные только один раз, и журналы доказывают, что файл был обработан только один раз.Какие могут быть возможные причины дублирования?Есть ли способы предотвратить это перед загрузкой в bigquery?
client, err := bigquery.NewClient(ctx, loadJob.ProjectID, clientOption)
if err != nil {
return nil, jobID, err
}
defer client.Close()
ref := bigquery.NewGCSReference(loadJob.URIs...)
if loadJob.Schema == nil {
ref.AutoDetect = true
} else {
ref.Schema = loadJob.Schema
}
ref.SourceFormat = bigquery.JSON
dataset := client.DatasetInProject(loadJob.ProjectID, loadJob.DatasetID)
if err := dataset.Create(ctx, nil); err != nil {
// Create dataset if it does exist, otherwise ignore duplicate error
if !strings.Contains(err.Error(), ErrorDuplicate) {
return nil, jobID, err
}
}
loader := dataset.Table(loadJob.TableID).LoaderFrom(ref)
loader.CreateDisposition = bigquery.CreateIfNeeded
loader.WriteDisposition = bigquery.WriteAppend
loader.JobID = jobID
job, err := loader.Run(ctx)
if err != nil {
return nil, jobID, err
}
status, err := job.Wait(ctx)
return status, jobID, err