SQL tester and cost estimator for Google BigQuery
Project description
sfb
sfb helps SQL testing and estimating the cost of services that depend on scan volume.
Description
- Check SQL syntax
- Estimate query costs for free
- per Run
- per Month
- Replace query parameters automatically
- Be useful on continuous integration
- Use dryrun include Google BigQuery API Client Libraries
Install
$ pip install sfb
Requirements
- Python >= 3.6
- Jupyter Notebook
- Google Colaboratory
- google-cloud-bigquery >= 2.6.1
- pyyaml >= 5.4.1
Usage
Estimate Query Costs
# If runs with no arguments, execute files in './sql/*.sql'.
$ sfb
{
"Succeeded": [
{
"SQL File": "/home/admin/project/sfb_test/sql/covid19_open_data.covid19_open_data.sql",
"Total Bytes Processed": "1.9 GiB",
"Estimated Cost($)": {
"per Run": 0.009414,
"per Month": 0.28242
},
"Frequency": "Daily"
},
{
...
}
],
"Failed": [
{
"SQL File": "/home/admin/project/sfb_test/sql/test_failure_badrequest_01.sql",
"Errors": [
{
"message": "Unrecognized name: names; Did you mean name? at [9:5]",
"domain": "global",
"reason": "invalidQuery",
"location": "q",
"locationType": "parameter"
}
]
},
{
...
}
]
}
# Others
$ sfb -f ./sql/*.sql
$ sfb -q "select * from test;"
$ echo "select * from test;" | sfb | jq
$ find ./sql -type f | sfb
Arguments
$ sfb -h
usage: sfb [-h] [-f [FILE [FILE ...]] | -q QUERY] [-c CONFIG] [-s {BigQuery}]
[-p PROJECT] [-v] [-d]
optional arguments:
-h, --help show this help message and exit
-f [FILE [FILE ...]], --file [FILE [FILE ...]]
sql filepath
-q QUERY, --query QUERY
query string
-c CONFIG, --config CONFIG
config filepath
-s {BigQuery}, --source {BigQuery}
source type
-p PROJECT, --project PROJECT
GCP project
-v, --verbose verbose results
-d, --debug run as debug mode
Directory (Optional)
$ tree .
.
├── config
│ └── sfb.yaml
├── log
│ └── sfb.log (if runs as debug mode)
└── sql
└── [SQL files here]
Configuration
$ cat ./config/sfb.yaml
# Default settings
Globals:
Service: BigQuery
Location: US
Frequency: Daily
QueryFiles:
[your_sql_file_name]:
Frequency: Weekly
Parameters:
- name: ds_start_date
type: DATE
value: '2020-01-01'
- name: ds_end_date
type: DATE
value: '2020-01-31'
...
Type
Name of query parameter type. Select one of types below.
- STRING
- INT64
- FLOAT64
- NUMERIC
- BOOL
- TIMESTAMP
- DATETIME
- DATE
Frequency
For calculating monthly cost estimation.
- Hourly
- (cost_per_run) * 30(days) * 24(h)
- Daily
- (cost_per_run) * 30(days)
- Weekly
- (cost_per_run) * 4(weeks)
- Monthly
- cost_per_run
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
sfb-0.1.4.tar.gz
(6.3 kB
view details)
Built Distribution
sfb-0.1.4-py3-none-any.whl
(10.3 kB
view details)
File details
Details for the file sfb-0.1.4.tar.gz
.
File metadata
- Download URL: sfb-0.1.4.tar.gz
- Upload date:
- Size: 6.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a25a054ddd263ffd47e34a38cf27ded5610054115d6eaedd5b28f40c968b906c |
|
MD5 | 9a9cbae728e460f978fcdb7843745f20 |
|
BLAKE2b-256 | 07c435e202b304834d218a48e310b39bd0dc2b0de35d3537477493f388670f72 |
File details
Details for the file sfb-0.1.4-py3-none-any.whl
.
File metadata
- Download URL: sfb-0.1.4-py3-none-any.whl
- Upload date:
- Size: 10.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fcfcf0398350be24f8c61cf353190d21c29b0bc54696b0c9cf6aad66465f00a2 |
|
MD5 | b511af7854241d7d48f31ec934e9ba9f |
|
BLAKE2b-256 | d2535b38862529ee46b200b3584a5950070a50f49cce2ea8ceb509b5ea328424 |