Skip to main content

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)

Uploaded Source

Built Distribution

sfb-0.1.4-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

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

Hashes for sfb-0.1.4.tar.gz
Algorithm Hash digest
SHA256 a25a054ddd263ffd47e34a38cf27ded5610054115d6eaedd5b28f40c968b906c
MD5 9a9cbae728e460f978fcdb7843745f20
BLAKE2b-256 07c435e202b304834d218a48e310b39bd0dc2b0de35d3537477493f388670f72

See more details on using hashes here.

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

Hashes for sfb-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 fcfcf0398350be24f8c61cf353190d21c29b0bc54696b0c9cf6aad66465f00a2
MD5 b511af7854241d7d48f31ec934e9ba9f
BLAKE2b-256 d2535b38862529ee46b200b3584a5950070a50f49cce2ea8ceb509b5ea328424

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page