Skip to main content

BigQuery

Installation

  1. Install package

    If you are developing with binary, the package is already bundled in the binary. You can skip this step.

    npm i @vulcan-sql/extension-driver-bq
  2. Update vulcan.yaml, and enable the extension.

    extensions:
    ...
    bq: '@vulcan-sql/extension-driver-bq' # Add this line
  3. Create a new profile in profiles.yaml or in your profile files. For example:

    info

    You can choose one from keyFilename or credentials to use.

    Your service account must have the following permissions to successfully execute queries.

    • BigQuery Data Viewer: required for running queries.
    • BigQuery Job User: required for running queries.
    • Storage Object Admin: for caching feature. (optional)

    For details, please refer to here.

    with keyFilename:

    - name: bq # profile name
    type: bq
    connection:
    location: US
    projectId: 'your-project-id'
    keyFilename: '/path/to/keyfile.json'
    allow: '*'

    with credential:

    - name: bq # profile name
    type: bq
    connection:
    location: US
    projectId: 'your-project-id'
    credential:
    client_email: vulcan@projectId.iam.gserviceaccount.com
    private_key: '-----BEGIN PRIVATE KEY----- XXXXX -----END PRIVATE KEY-----\n'
    allow: '*'

Connection Configuration

Please check Interface BigQueryOptions and Google BigQuery: Node.js Client for further information.

NameRequiredDefaultDescription
locationNUSLocation must match that of the dataset(s) referenced in the query.
projectIdNThe project ID from the Google Developer's Console, e.g. 'grape-spaceship-123'. We will also check the environment variable GCLOUD_PROJECT for your project ID. If your app is running in an environment which supports Application Default Credentials, your project ID will be detected.
keyFilenameNFull path to the a .json, .pem, or .p12 key downloaded from the Google Developers Console. If you provide a path to a JSON file, the projectId option above is not necessary. NOTE: .pem and .p12 require you to specify the email option as well.
credentialsNCredentials object.
credentials.client_emailNYour service account.
credentials.private_keyNYour service account's private key.