0.0
The project is in a healthy, maintained state
A Sequel adapter for Google's BigQuery
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
 Dependencies

Runtime

 Project Readme

sequel-bigquery

Gem Version

A Sequel adapter for Google's BigQuery.

Contents

  • Intro
  • Installation
  • Usage
  • Contributing
  • Development
    • Pre-push hook
    • Release

Intro

Be warned: Given I was unable to find Sequel documentation covering how to write a database adapter, this was put together by reading Sequel's source and hacking at things until they worked. There are probably a lot of rough edges.

Features:

  • Connecting
  • Migrating
  • Table creation, with automatic removal of defaults from statements (since BigQuery doesn't support it)
  • Inserting rows
  • Updating rows, with automatic addition of where 1 = 1 to statements (since BigQuery requires a where clause)
  • Querying
  • Transactions (buffered since BigQuery only supports them when you execute the whole transaction at once)
  • Ruby types:
    • String
    • Integer
    • Boolean (TrueClass/FalseClass)
    • DateTime (note that BigQuery does not persist timezone)
    • Date
    • BigDecimal

Installation

Add it to the Gemfile of your project:

gem 'sequel-bigquery'

and install all your gems:

bundle install

Or you can install it to your system directly using:

gem install sequel-bigquery

Usage

Connect to BigQuery:

require 'sequel-bigquery'

db = Sequel.connect(
  adapter: :bigquery,
  project: 'your-gcp-project',
  database: 'your_bigquery_dataset_name',
  logger: Logger.new(STDOUT),
)

And use Sequel like normal.

Contributing

Pull requests welcome! =)

Development

Pre-push hook

This hook runs style checks and tests.

To set up the pre-push hook:

echo -e "#\!/bin/bash\n\$(dirname \$0)/../../auto/pre-push-hook" > .git/hooks/pre-push
chmod +x .git/hooks/pre-push

Release

To release a new version:

auto/release/update-version && auto/release/tag && auto/release/publish

This takes care of the whole process:

  • Incrementing the version number (the patch number by default)
  • Tagging & pushing commits
  • Publishing the gem to RubyGems
  • Creating a draft GitHub release

To increment the minor or major versions instead of the patch number, run auto/release/update-version with --minor or --major.