REST APIをCSVとして使用して、Google BigQueryのネストされたスキーマを使用してテーブル全体をエクスポートする方法はありますか?Google BigQuery REST API CSVとしてネストされたスキーマを持つC#コピー/エクスポートテーブル
ネストされていないスキーマでこれを実行する例があります(https://cloud.google.com/bigquery/docs/exporting-data)。これは、テーブル内のネストされていない列で正常に動作します。ここでは、この部分のコードは次のとおりです。BQで
PagedEnumerable<TableDataList, BigQueryRow> result2 = client.ListRows(datasetId, result.Reference.TableId);
StringBuilder sb = new StringBuilder();
foreach (var row in result2)
{
sb.Append($"{row["visitorId"]}, {row["visitNumber"]}, {row["totals.hits"]}{Environment.NewLine}");
}
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(sb.ToString())))
{
var obj = gcsClient.UploadObject(bucketName, fileName, contentType, stream);
}
totals.hitsのような列がある、totals.visits ...私はそれらに対処しようとした場合、私はそのような列がないことにErrorMessageを得ました。私が "合計"を扱っている場合、私は自分のcsvの行にobjectname "System.Collections.Generic.Dictionary`2 [System.String、System.Object]"を取得します。
何か可能性はありますか?最終的に私はBQのGAのテーブルをCSVとしてどこか別の場所に置いておきたい。
.NETや明示的な書式設定のバグは忘れてしまいます。ネストした表のCSVはどのように見えますか?ネストされたヘッダーとデータはどこに行きますか? CSVは、表形式データのための*シンプル*形式です。あなたが尋ねるものは、間違いなくそれです。 –
どのようにそのデータを使用しますか?それを別のデータベースにインポートしますか?自分で処理しますか?それをRに送りますか?あなたは本当にその入れ子構造を望んでいますか? JSONを使用することができます。特にデータが多い場合は、行区切りのJSONを使用できます。または、元のデータを最初に平坦化して(クライアントではなくオリジナルの*クエリで)、通常のCSVファイルをエクスポートすることができます。 –
データの宛先はAzure BLOBストレージ(およびそのAzure ML)です。私はテーブル全体(BQのGAから毎日生成されたテーブル)を自動的にエクスポートして、さらなる分析のためにcsvとしてブロブストレージに格納したいと思っています。そこで、Google REST APIを使用してデータを取得し、このプログラムで変換を行い、Microsoft REST APIを使用してファイルを保存しようとします。 CSVはBQから生成されたcsvのように見えます。私は、ネストされていないデータが繰り返されていることを意味します。私がBQに入ることができるように、不必要なテーブルを取得したいだけです。 – Mogry