Cloud BigQuery C++ Client Library

The Cloud BigQuery C++ Client library offers types and functions to use Cloud BigQuery from C++ applications.

While this library is GA, please note Google Cloud C++ client libraries do not follow Semantic Versioning.

Quickstart

The following shows the code that you'll run in the google/cloud/bigquery/quickstart/ directory, which should give you a taste of the Cloud BigQuery C++ client library API.

#include "google/cloud/bigquery/storage/v1/bigquery_read_client.h" #include <iostream>  namespace { void ProcessRowsInAvroFormat(     ::google::cloud::bigquery::storage::v1::AvroSchema const&,     ::google::cloud::bigquery::storage::v1::AvroRows const&) {   // Code to deserialize avro rows should be added here. } }  // namespace  int main(int argc, char* argv[]) try {   if (argc != 3) {     std::cerr << "Usage: " << argv[0] << " <project-id> <table-name>\n";     return 1;   }    // project_name should be in the format "projects/<your-gcp-project>"   std::string const project_name = "projects/" + std::string(argv[1]);   // table_name should be in the format:   // "projects/<project-table-resides-in>/datasets/<dataset-table_resides-in>/tables/<table   // name>" The project values in project_name and table_name do not have to be   // identical.   std::string const table_name = argv[2];    // Create a namespace alias to make the code easier to read.   namespace bigquery_storage = ::google::cloud::bigquery_storage_v1;   constexpr int kMaxReadStreams = 1;   // Create the ReadSession.   auto client = bigquery_storage::BigQueryReadClient(       bigquery_storage::MakeBigQueryReadConnection());   ::google::cloud::bigquery::storage::v1::ReadSession read_session;   read_session.set_data_format(       google::cloud::bigquery::storage::v1::DataFormat::AVRO);   read_session.set_table(table_name);   auto session =       client.CreateReadSession(project_name, read_session, kMaxReadStreams);   if (!session) throw std::move(session).status();    // Read rows from the ReadSession.   constexpr int kRowOffset = 0;   auto read_rows = client.ReadRows(session->streams(0).name(), kRowOffset);    std::int64_t num_rows = 0;   for (auto const& row : read_rows) {     if (row.ok()) {       num_rows += row->row_count();       ProcessRowsInAvroFormat(session->avro_schema(), row->avro_rows());     }   }    std::cout << num_rows << " rows read from table: " << table_name << "\n";   return 0; } catch (google::cloud::Status const& status) {   std::cerr << "google::cloud::Status thrown: " << status << "\n";   return 1; } 

Main classes

This library offers multiple *Client classes, which are listed below. Each one of these classes exposes all the RPCs for a service as member functions of the class. This library groups multiple services because they are part of the same product or are often used together. A typical example may be the administrative and data plane operations for a single product.

The library also has other classes that provide helpers, configuration parameters, and infrastructure to mock the *Client classes when testing your application.

Next Steps