在 C# 中插入具有重复记录列的 BigQuery 行

Posted

技术标签:

【中文标题】在 C# 中插入具有重复记录列的 BigQuery 行【英文标题】:Insert row in BigQuery having repeated record column in C# 【发布时间】:2019-10-08 16:11:37 【问题描述】:

我有一个在 BigQuery 中插入一行的 C# 代码。但是 BigQuery 中的表有一个记录字段。 我应该如何将数据插入到该表中?

BigQuery 表: 第 1 列 |第 2 列 |列 3.a |列 3.b |第4栏

*column3 是一个包含多行“a”和“b”的记录

这是我目前在 C# 代码中得到的:

BigQueryClient BQclient = BigQueryClient.Create(project_id, credentials);
var table = BQclient.GetDataset("dataset").GetTable("table");
List < BigQueryInsertRow > rows = new List < BigQueryInsertRow >();
try 
      for (int i=0; i < data.Count; i++ ) 
          BigQueryInsertRow insertRow = new BigQueryInsertRow();
          insertRow.Add("column1", data[i].column1);
          insertRow.Add("column2", data[i].column2);

↓↓↓这是我很难过的地方↓↓↓

          for (int j=0; j < data[i].column3.Count; j++ ) 
              insertRow.Add("colum3.a", data[i].column3[j].a);
              insertRow.Add("colum3.b", data[i].column3[j].b);
          

↑↑↑这是我很难过的地方↑↑↑

          insertRow.Add("column4"), data[i].column4);
          rows.Add(insertRow);
      
      table.InsertRows(rows);

catch (Exception e) 
    throw e;

【问题讨论】:

我很确定我知道这里的问题是什么,但我想先问几个澄清问题。 1)table是什么对象?它是一个数据表吗? 2)我们能看到BigQueryInsertRow的定义吗? 'table' 是将数据行插入其中的 BigQuery 表名称。 BigQueryInsertRow 是一个类。它的定义可以在这里找到:googleapis.github.io/google-cloud-dotnet/docs/… 好的,谢谢。而您遇到问题的代码......它会引发错误吗?如果是这样,错误是什么? 您是否尝试按原样添加它?即insertRow.Add("column3", data[i].column3)? 是的,但它给了我一个 BigQuery 错误。 【参考方案1】:

玩弄之后,我能够将重复的数据插入到我的 insertRow 中。 这是我所做的:

var temp = new BigQueryRow();
var list_data = new List<BigQueryInsertRow>();
for (int j=0; j<data[i].column3.Count; j++)

   temp = new BigQueryRow();
   temp.Add("a", data[i].column3[j].a);
   temp.Add("b", data[i].column3[j].b);
   list_data.Add(temp);

insertRow.Add("column3", list_data);

显然,记录中的每一列都应该用它自己的列名来命名,而不需要附加父列名,即 column3。

【讨论】:

以上是关于在 C# 中插入具有重复记录列的 BigQuery 行的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:如何在重复记录中插入新值?

SQL BigQuery - 插入具有不同日期范围的行

Google BigQuery:具有重复名称的联接表的所有列的前缀

如何使用 bigrquery 库将非重复记录插入 BigQuery?

按最近日期加入 BigQuery 中具有重复记录的表

从 BigQuery 中删除重复记录