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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Miyamotok
March 08, 2022
Technology
0
580
[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
640
ノーコード×分析基盤で複数データソースからのデータ収集を楽しようの話 / multi-saas-data-extract
miyamotok
0
390
Amazon Appflow で SaaS データ取込みを自動化してQuickSightで可視化してみた / appflow-salesforce-quicksight
miyamotok
0
5.9k
AWS Glue を試してみたら、カスタムコネクタのありがたさを感じたこと / awsglue-custom-connector
miyamotok
0
2k
最近使ったETL、ELTサービス(ツール)でデータ収集タスクについて考える / etl-elt-datacollect-task
miyamotok
1
3.2k
_CDataSync_SaaSデータのバックアップ_.pdf
miyamotok
0
1.2k
Other Decks in Technology
See All in Technology
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
240
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.4k
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.2k
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
210
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.8k
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
140
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
530
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
330
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
180
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
550
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
3
450
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
174
15k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
140
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
77
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
66
37k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
210
Claude Code のすすめ
schroneko
67
210k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.3k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
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!