SlideShare a Scribd company logo
1 of 13
BigQueryに保存するとき
カラム名と型をチェックしてくれる
ライブラリを作ってみました
2021-11-26
PyData Tokyo meetup #24
堀越保徳 a.k.a. @hotoku
自己紹介
• 堀越保徳
• @hotoku ほとんど休眠
• 株式会社JDSC 勤務
• 本発表の内容は個人の見解であって、所属組織を代表するものではあ
りません(お約束)
サマリ
• Python→BigQueryにデータを保存するときに、ちょっと便利
なパッケージを造りました(ニッチですね🚢)
• https://github.com/hotoku/bqsc
• https://pypi.org/project/bqsc/
• 最適化には関係ないです🙇
• 「Python×データ活用の技術的な話題」ではあるのでご容赦
モチベーション
データフレームにデータを詰めて、
to_gbqで、BQテーブルに保存しようとしたら・・
モチベーション
エラーになったのだが、どこが間違っているのか分からん・・・
• どの列が間違っているのかがエラーメッセージから分からない
• 保存時に例外が投げられるので、コード上の間違っている行が分からない
InvalidSchema: Please verify that the structure and data types in the
DataFrame match the schema of the destination table.
モチベーション
_人人人人人人人_
> preidction <
 ̄Y^Y^Y^Y^Y^Y^ ̄
実際は列がもっと
沢山あるし、ソースも
複数ファイルに亘る・・
ソリューション
BQのスキーマが予め分かっているなら、
チェックできるじゃないか
ソリューション
bqsc.load
BQのスキーマ指定ファイルから、
列名と型の情報を持ったクラスを自動で定義
ソリューション
エラーメッセージで、
何がおかしいのか分かる
保存時ではなく、タイポしている場所
で例外を投げるので、コードの場所が
分かる
ソリューション
型の間違いも検出してくれる
ソリューション
型定義を生成するCLIがアリ〼 🐜
※CLIの詳しい使い方は、
レポジトリのサンプル
参照
ソリューション
型情報を使えば、エディタが自動で補完してくれたり、
型の間違いを、リアルタイムで教えてくれるようになり〼
サマリ
• Python→BigQueryにデータを保存するときに、ちょっと便利
なパッケージを造りました
• メタプログラミングを使ってみたかった
• ご清聴ありがとうございました 🐜

More Related Content

Similar to Pydata tokyo-24-hootku

BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成(shibao)芝尾 (kouichiro)幸一郎
 
オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906
オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906
オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906Teruo Kawasaki
 
再考: お買い得物件を機械学習で見つける方法
再考: お買い得物件を機械学習で見つける方法再考: お買い得物件を機械学習で見つける方法
再考: お買い得物件を機械学習で見つける方法智志 片桐
 
HealthKitで日別のデータを一度に取得する
HealthKitで日別のデータを一度に取得するHealthKitで日別のデータを一度に取得する
HealthKitで日別のデータを一度に取得する今城 善矩
 
20190723 mlp lt_bayes_pub
20190723 mlp lt_bayes_pub20190723 mlp lt_bayes_pub
20190723 mlp lt_bayes_pubYoichi Tokita
 
GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月Kazumi IWANAGA
 
Get started with future C# .Net development with Docker
Get started with future C# .Net development with DockerGet started with future C# .Net development with Docker
Get started with future C# .Net development with DockerOshitari_kochi
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築You&I
 
今日から始めるGithub
今日から始めるGithub今日から始めるGithub
今日から始めるGithublion-man
 
Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話y-uti
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門kashew_nuts
 
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるShuhei Iitsuka
 
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013DQNEO
 
Redash pythonで業務分析
Redash pythonで業務分析Redash pythonで業務分析
Redash pythonで業務分析創史 花村
 
医療データ解析者へ向けた Git・GitHub 入門
医療データ解析者へ向けた Git・GitHub 入門医療データ解析者へ向けた Git・GitHub 入門
医療データ解析者へ向けた Git・GitHub 入門Yui Tomo
 
Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方Takahiro Fujiwara
 
201806 hugo で静的サイト作ってみた
201806 hugo で静的サイト作ってみた201806 hugo で静的サイト作ってみた
201806 hugo で静的サイト作ってみたjunichim
 
ソース管理しようぜ!Gitの部
ソース管理しようぜ!Gitの部ソース管理しようぜ!Gitの部
ソース管理しようぜ!Gitの部pmw1415
 

Similar to Pydata tokyo-24-hootku (20)

BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成
 
オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906
オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906
オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906
 
再考: お買い得物件を機械学習で見つける方法
再考: お買い得物件を機械学習で見つける方法再考: お買い得物件を機械学習で見つける方法
再考: お買い得物件を機械学習で見つける方法
 
HealthKitで日別のデータを一度に取得する
HealthKitで日別のデータを一度に取得するHealthKitで日別のデータを一度に取得する
HealthKitで日別のデータを一度に取得する
 
20190723 mlp lt_bayes_pub
20190723 mlp lt_bayes_pub20190723 mlp lt_bayes_pub
20190723 mlp lt_bayes_pub
 
GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月GitHub最新情報キャッチアップ 2023年6月
GitHub最新情報キャッチアップ 2023年6月
 
Get started with future C# .Net development with Docker
Get started with future C# .Net development with DockerGet started with future C# .Net development with Docker
Get started with future C# .Net development with Docker
 
Yapc2012資料
Yapc2012資料Yapc2012資料
Yapc2012資料
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
今日から始めるGithub
今日から始めるGithub今日から始めるGithub
今日から始めるGithub
 
Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話
 
Github of project
Github of projectGithub of project
Github of project
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門
 
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
 
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
 
Redash pythonで業務分析
Redash pythonで業務分析Redash pythonで業務分析
Redash pythonで業務分析
 
医療データ解析者へ向けた Git・GitHub 入門
医療データ解析者へ向けた Git・GitHub 入門医療データ解析者へ向けた Git・GitHub 入門
医療データ解析者へ向けた Git・GitHub 入門
 
Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方
 
201806 hugo で静的サイト作ってみた
201806 hugo で静的サイト作ってみた201806 hugo で静的サイト作ってみた
201806 hugo で静的サイト作ってみた
 
ソース管理しようぜ!Gitの部
ソース管理しようぜ!Gitの部ソース管理しようぜ!Gitの部
ソース管理しようぜ!Gitの部
 

Pydata tokyo-24-hootku