У меня есть код, написанный для BigQuery. Я хочу иметь возможность обновлять все элементы списка, отправляя список. Чтобы не быть заблокированным в BigQuery из-за стоимости запроса и чрезмерного количества запросов, я пытаюсь выполнить обновление, отправляя список за раз и с помощью одного запроса. Подробности кода, который я написал для .Net, приведены ниже. Однако я не смог закончить его и ищу информацию и предложения по решению этой проблемы. Возможно ли это сделать? Если возможно, как и что редактировать? Если нет, то в чем причина?
private async Task UpsertCardHistoryToBigQueryAsync(List recordList)
{
var circuitBreakerPolicy = Policy
.Handle()
.CircuitBreakerAsync(2, TimeSpan.FromMinutes(1));
await circuitBreakerPolicy.ExecuteAsync(async () =>
{
var query = @"
MERGE `{_datasetId}.{_tableId}` AS target
USING UNNEST(@dataList) AS source
ON target.UniqueId = source.UniqueId
WHEN MATCHED THEN
UPDATE SET source..
WHEN NOT MATCHED THEN
INSERT (*)
VALUES(source..);";
var parameters = new List
{
new BigQueryParameter("dataList", BigQueryDbType.Array, recordList)
};
var jobOptions = new QueryOptions { UseQueryCache = false };
var queryJob = await _bigQueryClient.ExecuteQueryAsync(query, parameters, jobOptions);
});
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... querye-net