Вы можете создать задание загрузки csv для загрузки данных из файла csv в Google Cloud Storage, используя BigQueryClient в Google.Cloud.BigQuery.V2, который имеет метод CreateLoadJob.
Как вы можетегарантируйте идемпотентность с этим API, чтобы убедиться, что, скажем, сеть прервалась до получения ответа, и вы начали повторную попытку, и вы не получите многократные загрузки одних и тех же данных в BigQuery?
Пример использования API
private void LoadCsv(string sourceUri, string tableId, string timePartitionField)
{
var tableReference = new TableReference()
{
DatasetId = _dataSetId,
ProjectId = _projectId,
TableId = tableId
};
var options = new CreateLoadJobOptions
{
WriteDisposition = WriteDisposition.WriteAppend,
CreateDisposition = CreateDisposition.CreateNever,
SkipLeadingRows = 1,
SourceFormat = FileFormat.Csv,
TimePartitioning = new TimePartitioning
{
Type = _partitionByDayType,
Field = timePartitionField
}
};
BigQueryJob loadJob = _bigQueryClient.CreateLoadJob(sourceUri: sourceUri,
destination: tableReference,
schema: null,
options: options);
loadJob.PollUntilCompletedAsync().Wait();
if (loadJob.Status.Errors == null || !loadJob.Status.Errors.Any())
{
//Log success
return;
}
//Log error
}