Metadata-Version: 2.1
Name: bqrun
Version: 2.0.0
Summary: Query runner for BigQuery. It automatically analyzes dependencies and runs only necessary queries in parallel.
Home-page: https://github.com/hotoku/bqrun
License: MIT
Keywords: bigquery
Author: Yasunori Horikoshi
Author-email: horikoshi.et.al@gmail.com
Requires-Python: >=3.7,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Dist: Jinja2 (>=3.0.3,<4.0.0)
Requires-Dist: networkx (>=2.6.3,<3.0.0)
Requires-Dist: pydot (>=1.4.2,<2.0.0)
Project-URL: Repository, https://github.com/hotoku/bqrun
Description-Content-Type: text/markdown

# bqrun

## 概要
ディレクトリの中にあるsqlファイルを全て読み、依存関係を解析し（あるファイルAで`select .. from`されているテーブルが別のファイルBで`create table`されていた場合、
BはAより前に実行される）、順番に実行するためのMakefileを作成、makeを実行する。

## 外部依存
1. docker
2. graphviz（dotコマンド）

## インストール
1. `pip install bqrun`

## 前提
1. 1つのディレクトリの中に全てのSQLファイルが入っていること
1. 全てのSQLファイルは拡張子`.sql`を持つこと、かつ、クエリ以外に`.sql`で終わるファイルがないこと
## 大まかな動作
1. 全SQLファイルを読んで依存関係を解析、依存関係に従ったMakefileを作成する
1. このMakefileにより、各ファイルに対し以下のようなコマンドが実行される
    1. 各SQLファイルを`bq query`に投げる
    1. `done.<base name>` というファイルを作成する(`<base name>`は、ファイル名の拡張子以外)
1. 2回目以降の実行では、各ファイルについて`done.<base name>`ファイルのタイムスタンプと、依存先のファイルのタイムスタンプを比較し再実行が必要な部分だけが実行される

## オプション
1. `-p=<num>`または`--parallel=<num>`: 並列実行数を指定（デフォルトは8）

