Elixir에서 BigQuery를 조작하는 도구를 만들었습니다.
그래서 이쪽에서 조금 소개시켜 주세요.
만든 것
사용법
준비
# mix.exs
def deps do
[
{:blanton, "~> 0.1.3"}
]
end
# config/config.exs
config :goth,
json: "path/to/google/json/creds.json" |> File.read!
config :blanton,
project_id: "PROJECT_ID",
dataset_id: "DATASET_ID"
테이블 만들기
# lib/APP_NAME/bq_schema/TABLE_NAME.ex
defmodule APP_NAME.BqSchema.TABLE_NAME do
# ↓をuseする
use Blanton.Schema
# 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
# Table作成時に指定するオプションはこっちに指定する
# options do
# partitiondate
# register :timePartitioning, %GoogleApi.BigQuery.V2.Model.TimePartitioning{type: "DAY"}
# end
end
mix bq.migrate PATH/TO/SCEHMA_DIR
를 실행하면 BigQuery에 테이블이 만들어집니다.mix bq.migrate.drop
를 실행하면 용서없이 테이블이 삭제됩니다.레코드 삽입
Blanton.Record.insert("TABLE_NAME", records)
로 삽입할 수 있습니다
records = [
%{name: "安室透", age: 29},
%{name: "赤井秀一", age: 32},
]
table_name = "users"
Blanton.Record.insert("PROJECT_ID", "DATASET_ID", table_name, records)
Blanton.Record.insert(table_name, records)
레코드 검색 기능 없음
덤 #1
누구나 사용할 수 있는 패키지를 쓴 것이 실은 처음이므로 모르는 곳을 조사하면서 실장했습니다.
Elixir답지 않은 곳도 아마 포함하고 있다고 생각합니다만 hex.pm에 공개하는 곳까지 어떻게든 가져갈 수 있었습니다.
벌써 스스로는 다른 리포지토리에서도 이용하고 있습니다만, 나 이외에도 몇몇 분이 아무래도 다운로드해 주고 있는 것 같아서 매우 기쁘게 생각합니다.
버그라든지 어색한 곳 찾아냈다든지 기능 추가했다든가 있으면 PR 받을 수 있으면 다행입니다.
덤 #2
Elixir에서 라이브러리를 찾을 때 Ruby 등의 언어라고 구그라고 생각합니다만 Elixir라고 나오지 않을 때가 있습니다.
그런 때는 에 x. pm 에서 검색해 보는 것이 추천입니다!
Reference
이 문제에 관하여(Elixir에서 BigQuery를 조작하는 도구를 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gr8distance/items/01ba1cd4298761331f1b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)