= Google BigQuery Standard SQL Component
:doctitle: Google BigQuery Standard SQL
:shortname: google-bigquery-sql
:artifactid: camel-google-bigquery
:description: Access Google Cloud BigQuery service using SQL queries.
:since: 2.23
:supportlevel: Stable
:component-header: Only producer is supported
//Manually maintained attributes
:group: Google
:camel-spring-boot-name: google-bigquery

*Since Camel {since}*

*{component-header}*

The Google BigQuery SQL component provides access
to https://cloud.google.com/bigquery/[Cloud BigQuery Infrastructure] via
the https://developers.google.com/apis-explorer/#p/bigquery/v2/bigquery.jobs.query[Google Client Services API].

The current implementation supports only standard SQL
https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax[DML queries].

Maven users will need to add the following dependency to their pom.xml
for this component:

[source,xml]
------------------------------------------------------
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-google-bigquery</artifactId>
    <!-- use the same version as your Camel core version -->
    <version>x.x.x</version>
</dependency>

------------------------------------------------------

[[GoogleBigQuery-AuthenticationConfiguration]]

== Authentication Configuration

Google BigQuery component authentication is targeted for use with the GCP Service Accounts.
For more information please refer to https://cloud.google.com/docs/authentication[Google Cloud Platform Auth Guide]

Google security credentials can be set explicitly by providing the path to the GCP credentials file location.

Or they are set implicitly, where the connection factory falls back on
https://developers.google.com/identity/protocols/application-default-credentials#howtheywork[Application Default Credentials].

*OBS!* The location of the default credentials file is configurable - via GOOGLE_APPLICATION_CREDENTIALS environment variable.

== URI Format

--------------------------------------------------------
google-bigquery-sql://project-id:query?[options]
--------------------------------------------------------

Examples:
--------------------------------------------------------
google-bigquery-sql://project-17248459:delete * from test.table where id=@myId

google-bigquery-sql://project-17248459:delete * from ${datasetId}.${tableId} where id=@myId
--------------------------------------------------------
where

 * parameters in form $\{name} are extracted from message headers and formed the translated query
 * parameters in form @name are extracted from body or message headers and sent to Google Bigquery

You can externalize your SQL queries to files in the classpath or file system as shown:

--------------------------------------------------------
google-bigquery-sql://project-17248459::classpath:delete.sql
--------------------------------------------------------


// component-configure options: START

// component-configure options: END

// component options: START
include::partial$component-configure-options.adoc[]
include::partial$component-endpoint-options.adoc[]
// component options: END

// endpoint options: START

// endpoint options: END


== Message Headers

[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Name |Type |Description
|`CamelGoogleBigQueryJobId` |`JobId` |A custom `JobId` to use
|=======================================================================

== Output Message Headers

[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Name |Type |Description
|`CamelGoogleBigQueryTranslatedQuery` |`String` | Preprocessed query text
|=======================================================================


== Producer Endpoints

Google BigQuery SQL endpoint expects the payload to be either empty or a map of query parameters.


include::spring-boot:partial$starter.adoc[]
