Blanton
-
Blanton is a BigQuery library written by Elixir.
Installation
-
Add Blanton to your list of dependencies in mix.exs:
def deps do
[
{:blanton, "~> 0.2.0"}
]
end
-
Pass in your credentials json downloaded from your GCE account:
config :goth,
json: "path/to/google/json/creds.json" |> File.read!
-
If you have one dataset to operate on, you can also set it first.
config :blanton,
project_id: "",
dataset_id: ""
You can do
-
Dataset
-
Table
-
[x] Select
-
[x] Create
-
[x] Create(Option usable)
-
[x] Update
-
[x] Delete
-
Record
Usage
Query.table("users")
|> Query.pluck(["name", "age"])
|> Query.where([age: 31])
|> Query.limit(10)
|> Query.run
|> Query.to_records
|
input |
output |
|---|
|
age: 16 |
"age = 16" |
|
name: "桜坂しずく", age: 16 |
"name = '桜坂しずく' AND age = 16" |
|
"name IN ('桜坂しずく', '中須かすみ')" |
|
"age BETWEEN 15 AND 17" |
|
"name LIKE 'かな%'" |
|
"age <= 18" |
columns = [
%{name: "name", mode: :string, type: :required},
%{name: "age", mode: :int64, type: :nullable}
]
table = Blanton.Table.new("users", columns)
Blanton.Table.create("PROJECT_ID", "DATASET_ID", table)
# if you set dataset_id and project_id to config.exs
Blanton.Table.create(table)
records = [
%{name: "安室透", age: 29},
%{name: "赤井秀一", age: 32},
]
table_name = "users"
Blanton.Record.insert("PROJECT_ID", "DATASET_ID", table_name, records)
# if you set dataset_id and project_id to config.exs
Blanton.Record.insert(table_name, records)
# lib/APP_NAME/bq_schema/TABLE_NAME.ex
defmodule APP_NAME.BqSchema.TABLE_NAME do
use Blanton.Schema
schema :TABLE_NAME do
field :column_name, :string, :required
field :some_field_column, :record, :repeated, [
sub_field(:name, :string, :nullable),
sub_field(:price, :int64, :nullable),
]
end
# options do
# partitiondate
# register :timePartitioning, %GoogleApi.BigQuery.V2.Model.TimePartitioning{type: "DAY"}
# end
end
-
After creating the file, run the following command.
mix bq.migrate lib/bq_schema
-
If you want to delete the table use the following command
mix bq.drop- Please be careful because it cannot be stopped even if you execute it by mistake.