Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[ELTツール×BigQuery] どのAPI使ってる?それぞれのAPIについて調べてみた /...
Search
Miyamotok
March 08, 2022
Technology
0
560
[ELTツール×BigQuery] どのAPI使ってる?それぞれのAPIについて調べてみた / elttool-bigquery-which-api
Web API LT会 - vol.3 #webapilt
2022/03/08
Miyamotok
March 08, 2022
Tweet
Share
More Decks by Miyamotok
See All by Miyamotok
Amazon Appflow で Salesforce to Snowflake へのデータローディング(EL)をやってみた / appflow-salesforce-snowflake-dataloading
miyamotok
0
610
ノーコード×分析基盤で複数データソースからのデータ収集を楽しようの話 / multi-saas-data-extract
miyamotok
0
390
Amazon Appflow で SaaS データ取込みを自動化してQuickSightで可視化してみた / appflow-salesforce-quicksight
miyamotok
0
5.7k
AWS Glue を試してみたら、カスタムコネクタのありがたさを感じたこと / awsglue-custom-connector
miyamotok
0
2k
最近使ったETL、ELTサービス(ツール)でデータ収集タスクについて考える / etl-elt-datacollect-task
miyamotok
1
3.1k
_CDataSync_SaaSデータのバックアップ_.pdf
miyamotok
0
1.2k
Other Decks in Technology
See All in Technology
スタートアップの現場で実践しているテストマネジメント #jasst_kyushu
makky_tyuyan
0
140
AIでデータ活用を加速させる取り組み / Leveraging AI to accelerate data utilization
okiyuki99
5
1.3k
re:Inventに行くまでにやっておきたいこと
nagisa53
0
660
What's new in OpenShift 4.20
redhatlivestreaming
0
330
MCP ✖️ Apps SDKを触ってみた
hisuzuya
0
400
AI機能プロジェクト炎上の 3つのしくじりと学び
nakawai
0
130
東京大学「Agile-X」のFPGA AIデザインハッカソンを制したソニーのAI最適化
sony
0
150
コンパウンド組織のCRE #cre_meetup
layerx
PRO
1
280
CNCFの視点で捉えるPlatform Engineering - 最新動向と展望 / Platform Engineering from the CNCF Perspective
hhiroshell
0
140
Observability — Extending Into Incident Response
nari_ex
1
560
re:Invent 2025の見どころと便利アイテムをご紹介 / Highlights and Useful Items for re:Invent 2025
yuj1osm
0
280
DMMの検索システムをSolrからElasticCloudに移行した話
hmaa_ryo
0
120
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
620
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Navigating Team Friction
lara
190
15k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.7k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Gamification - CAS2011
davidbonilla
81
5.5k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Docker and Python
trallard
46
3.6k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Transcript
[ELTツール×BigQuery] どのAPI使ってる?それぞれの APIについて調べてみた Web API LT会 - vol.3 #webapilt 2022/03/08
CData Software Japan 宮本
自己紹介 宮本 航太(@miyamon44) CData Software Japan 合同会社 →主にSaaSのAPIにSQLでアクセスできるコネクタや アプリケーションを開発・提供 テクニカルサポートエンジニア
→ELTツールの CData Syncの製品サポートを中心に、他社サー ビスとの検証、技術ブログ、コネクタ開発など色々やってる
ある日のお問合せにて Salesforce のリード情報を BigQuery にレプリケーションしたんだけど、 1回目は成功したんだが、 数分後すぐに2回目を実行すると失敗してしまう ジョブ構成などをヒアリングした結果、BigQuery のストリーミングAPI を使用してレ
プリケーションしていることがわかった ETL/ELT Tool
ストリーミングAPI • ストリーミングAPIは、insertAll というエンドポイントにリクエストしてデータを送信。 レコード自体はBodyにJSON型でリクエスト POST /v2/projects/{projectId}/datasets/{datasetId}/tables/{tableId}/insertAll • 特徴としてはデータ送信後にすぐ反映されるので、センサー情報などリアルタイムでモニタリングするようなケースには マッチ
BigQuery へのレプリケーション 【洗替方式】 毎回テーブル再作成で全件レプリケーション 【差分連携】 連携用テーブルを用意してそこに差分データだけ連携。 連携後は本番テーブルにレコードをマージ。例えば Dataform や dbt
などの変換 サービスを使ったり。
再現確認&原因 【再現確認】 洗替方式の内容*1を順番に Postman でリクエストして確認 *1: テーブル削除 → テーブル作成 →
ストリーミングインサート 【原因】 同名のテーブル再作成だと、テーブルが BigQuery に再作成してから数分 間の間は物理的に反映されないのがわかった。 BigQuery のコンソール画 面からテーブルサイズを見ても 0バイトのまま ※試した内容はQiitaに https://qiita.com/miyamotok/items/7036758013893b94aceb
他にないか調べた ストリーミングAPI 以外のデータ転送系APIの確認 • JSONじゃなくてSQLでリクエストできる Query API • 転送内容をアップロード&アップロード用ジョブを作成して実行する Upload
API
Query API • insertAll のように送信レコードを JSONで送るのではなく、SQLをBigQueryに送信する。 POST /v2/projects/{projectId}/queries • 同期型なので失敗した場合はBigQuery側には反映されない。
ただし成功すると即座にテーブル自体も反映される。 ➡ テーブル再作成を頻繁に行うケースでも対応できるので、こっちを案内
Upload API • upload API BigQueryの一時ストレージに対象データをアップロードしてロード用ジョブを作成する POST /upload/bigquery/v2/projects/projectId/jobs • 大量レコードを反映したい場合などに向いている
おまけ(Write API) ストリーミングAPIとバッチ処理を一つにまとめたAPIがつい最近リリース!! ストリーミングAPIがいつの間にか古くなってた。今後 はWriteAPIを推奨のようで。
まとめ • ELTサービス/ツールで利用APIを指定できるか?(転送方式を変更できるか) • ユースケースにマッチする API(エンドポイント)はどれか? • 最終的にはパフォーマンスやコストなども考慮 • 今後はWrite
APIが良さそうかも ツールやサービス利用時はぶっちゃけあまり意識しない部分 とは言え、オプションで BigQueryのAPIを選択できるかなどいくつかの観点で確認してみるのも◎ ETL/ELT ツールの CData Sync では指定可能 左記ブログで各種転送方式とパフォーマンスについて紹介してます Thank you!