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
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] << " \n";
return 1;
}
// project_name should be in the format "projects/"
std::string const project_name = "projects/" + std::string(argv[1]);
// table_name should be in the format:
// "projects//datasets//tables/" 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.
bigquery_analyticshub_v1::AnalyticsHubServiceClient
bigquery_biglake_v1::MetastoreServiceClient
bigquery_connection_v1::ConnectionServiceClient
bigquery_datapolicies_v1::DataPolicyServiceClient
bigquery_datatransfer_v1::DataTransferServiceClient
bigquery_migration_v2::MigrationServiceClient
bigquery_reservation_v1::ReservationServiceClient
bigquery_storage_v1::BigQueryReadClient
bigquery_storage_v1::BigQueryWriteClient
Next Steps
- Error Handling - describes how the library reports errors.
- How to Override the Default Endpoint - describes how to override the default endpoint.
- How to Override the Authentication Credentials - describes how to change the authentication credentials used by the library.
- Override Retry, Backoff, and Idempotency Policies - describes how to change the default retry policies.
- Environment Variables - describes environment variables that can configure the behavior of the library.
- Testing your Cloud BigQueryRead application with googlemock
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-06-11 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-06-11 UTC."],[[["The Cloud BigQuery C++ Client Library provides tools for C++ applications to interact with Cloud BigQuery, and it is currently in General Availability (GA)."],["The latest version of the library is 2.37.0-rc, and the library does not follow Semantic Versioning."],["The library features several client classes, including `AnalyticsHubServiceClient`, `MetastoreServiceClient`, `ConnectionServiceClient`, `DataPolicyServiceClient`, `DataTransferServiceClient`, `MigrationServiceClient`, `ReservationServiceClient`, `BigQueryReadClient`, and `BigQueryWriteClient`, each exposing RPCs for their respective services."],["The library offers a quickstart guide with example code demonstrating how to read data from a BigQuery table in AVRO format."],["Further documentation is provided for next steps, such as error handling, overriding endpoints and authentication credentials, retry policies, environment variables, and testing."]]],[]]