Google BigQuery: Unggah hasil ExecuteQuery ke Google Cloud Storage dalam format json

Saya mengimpor tabel bigquery yang berisi catatan berulang, saya perlu mengunggah catatan tersebut ke penyimpanan cloud google, Bagaimana cara mengonversi hasilnya ke format json sehingga saya dapat menyimpannya di google cloud?

Di bawah ini adalah kode saya:

  BigQueryClient Client = BigQueryClient.Create("test", _googleCredential)

   string query = @"select * from `projecttest.TestDataset.CostData`";

 result = Client.ExecuteQuery(query, parameters: null, queryOptions: new QueryOptions { UseLegacySql = false });

person Mayank    schedule 14.08.2018    source sumber


Jawaban (2)


Seperti yang saya lihat Anda melakukan ini untuk seluruh tabel - Anda sebaiknya menggunakan pekerjaan Ekspor dengan format JSON

person Mikhail Berlyant    schedule 14.08.2018
comment
Terima kasih atas tanggapan Anda, Bisakah Anda memberikan dokumen untuk menggunakan pekerjaan ekspor menggunakan c#. Apakah Anda merujuk pada metode EksporJsonToGcs di github .com/GoogleCloudPlatform/dotnet-docs-samples/blob/ - person Mayank; 14.08.2018
comment
Saya harus mengimpor tabel wildcard yang memiliki catatan berulang di dalamnya. Jadi akan sulit membuat json setiap tahun dengan menampilkan setiap baris/kolom. Apakah kami memiliki metode untuk melewati pembuatan json secara manual? - person Mayank; 14.08.2018
comment
Tentu. Anda dapat mencoba metode ini (saya bukan orang c# lagi jadi tidak dapat memastikan - api terkait adalah di sini dan Anda tidak perlu menyetel skema saat mengekspor - lihat di sini untuk menyetel atribut yang diperlukan. juga - penting - SELECT * dikenakan biaya pemindaian seluruh tabel vs ekspor gratis - person Mikhail Berlyant; 14.08.2018

Anda dapat menggunakan fungsi BigQuery Mengekspor Data Tabel yang dapat diterapkan untuk mengekspor membuat tabel data dari BigQuery ke GCS dalam beberapa format, seperti format ekspor JSON, CSV, dan Avro.

Saya menyarankan Anda untuk melihat Mengekspor data yang disimpan di BigQuery dokumentasi resmi yang berisi beberapa contoh berguna untuk mengirimkan pekerjaan ekstrak melalui API, UI Web, Baris Perintah, dan Perpustakaan Klien jika Anda menggunakan bahasa pemrograman tertentu seperti yang ditunjukkan dalam contoh kode C# berikut:

public void ExportJsonToGcs(
    string datasetId, string tableId, string bucketName, string fileName,
    BigQueryClient client)
{
    StorageClient gcsClient = StorageClient.Create();
    string contentType = "application/json";
    // Get Table and append results into StringBuilder.
    PagedEnumerable<TableDataList, BigQueryRow> result = client.ListRows(datasetId, tableId);
    StringBuilder sb = new StringBuilder();
    foreach (var row in result)
    {
        sb.Append($"{{\"title\" : \"{row["title"]}\", \"unique_words\":\"{row["unique_words"]}\"}}{Environment.NewLine}");
    }
    // Save stream to Google Cloud Storage.
    using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(sb.ToString())))
    {
        var obj = gcsClient.UploadObject(bucketName, fileName, contentType, stream);
    }
}
person Armin_SC    schedule 14.08.2018
comment
Saya melihat kode ini, tetapi saya harus mengunggah tabel yang memiliki tipe data rekaman di dalamnya. Apakah mungkin untuk mengimpor tabel tersebut? - person Mayank; 14.08.2018
comment
Berdasarkan dokumentasi Menentukan kolom bertingkat dan berulang, Anda seharusnya tidak memiliki masalah saat mengunggah tabel dengan tipe data RECORD karena BigQuery mendukung data bertingkat dan berulang dari format sumber yang mendukung skema berbasis objek, seperti file JSON. - person Armin_SC; 14.08.2018
comment
Jika saya perlu mengunggah n jumlah tabel, maka bukan praktik yang baik untuk menentukan skema secara manual untuk setiap tabel. - person Mayank; 16.08.2018
comment
Saya setuju. Referensi kolom bertingkat dan berulang disebutkan untuk menunjukkan dukungan RECORD dan STRUCT. Berdasarkan hal ini, Anda seharusnya dapat menggunakan fitur BigQuery Mengekspor Data Tabel tanpa masalah saat menangani data ini. - person Armin_SC; 16.08.2018
comment
Namun, karena Anda tidak dapat mengekspor data dari beberapa tabel dalam satu tugas ekspor, saya rasa Anda bisa mendapatkan daftar tabel BigQuery dan menggunakannya untuk memindahkan tabel Anda satu per satu ke/dari GCS, menambahkan deteksi otomatis Skema saat memuatnya ke dalam BigQuery untuk mendeteksi tipe data kolom secara otomatis. - person Armin_SC; 16.08.2018