Skip to main content

A Big Query json utility package

Project description

This is bqtools a handy set of utils to help create big query tables from json objects and make them into tables (so get the schema) and to create json new line files. Plus a set of common functions to ease writing biq query python code

Goals

  • Simplify handling and move between big query stryuctured data and json data
  • Allow you to create big query table schemas from json structures (as resource or schema objects) uses reflection of types
  • Provides easy generation of views for day partitioned tabled
    • head - latest data
    • diff views for time snap shots of data i.e. each day partition has current view of data
  • Calculate valid json structures from representative json data that can be used as basis of big query schemas
  • Clean json data such that it can be loaded into big query
    • Replace bare lists with dictionaries
    • Replace field names with valid values that can be column names in big query (removes spaces, characters not allowed in field names using same algorithms big query uses when auto detecting schemas)
    • Encodes json output of dates, datetimes, times, timedeltas encoded in format acceptable for big query corresponding field types
  • Generate code for bq command line tool from bq table structures
  • Simplify common tasks of handling big query data
    • Basic tests on dataset or tables existing
    • Schema patching compare an existing schema to a template json object calculate if changed and generate a merged schema that can be used in a patch
    • Flattening views to avoid view depth limits
import bqtools

# if you load a json object say something like
foo = {
        "id":1,
        "description":""
        "aboolean":False
      }
      
# generate a schema
table = {
   "type":"TABLE",
   "location":os.environ["location"],
   "tableReference":{
       "projectId": os.environ["projectid"],
       "datasetId": os.environ["dataset"],
       "tableId": key
   },
   "timePartitioning":{
       "type": "DAY",
       "expirationMs": "94608000000"
   },
   "schema": {}
}

# use bqtools to create a schema structure
table["schema"]["fields"] = bqtools.get_bq_schema_from_json_repr(foo)

Demonstrates some of power of tools via bqsync that is installed if you install via pip.

pip install bqtools-json

Or you can find the source for this here

Also provides means to handle views across environments supports SQL views based upon Jinja templates. So you can "configure" views for different environments.

Provides support for calculating view dependencies such views can be applied in parallel tranches.

Provides support for calculating authorised views based on set of views "compiled"

Compilation flattens views to lower view depth but automatically does not flatten authorised views to keep access to data tight as feasible.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bqtools_json-1.0.10.tar.gz (75.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bqtools_json-1.0.10-py3-none-any.whl (58.3 kB view details)

Uploaded Python 3

File details

Details for the file bqtools_json-1.0.10.tar.gz.

File metadata

  • Download URL: bqtools_json-1.0.10.tar.gz
  • Upload date:
  • Size: 75.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bqtools_json-1.0.10.tar.gz
Algorithm Hash digest
SHA256 f87f396c05e78cf05d226a7a78417c82dc31fa6cb941aebadcdcfd37a4a6dbdb
MD5 1acc8cb3d94c4c7b397a69df46e440e7
BLAKE2b-256 49efafb088c1f7fe388979e69f42e70fe5b6d1611ba3f03035be03eb4f1fab00

See more details on using hashes here.

Provenance

The following attestation bundles were made for bqtools_json-1.0.10.tar.gz:

Publisher: python-publish.yml on hsbc/bqtools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bqtools_json-1.0.10-py3-none-any.whl.

File metadata

  • Download URL: bqtools_json-1.0.10-py3-none-any.whl
  • Upload date:
  • Size: 58.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bqtools_json-1.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 b3fd5c677eb11086b4eb25f3fc0567670f04dc483cb2449747c77df630006de2
MD5 6c7b9c0468970541d2c5b8e68dee320d
BLAKE2b-256 568b143ae766b0a9db70d803f9b197eb9c8d6ddf438bfd137eac997fc2bee911

See more details on using hashes here.

Provenance

The following attestation bundles were made for bqtools_json-1.0.10-py3-none-any.whl:

Publisher: python-publish.yml on hsbc/bqtools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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