Skip to main content

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

Metadata

Release files for bqtools-json 0.4.74

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bqtools-json 0.4.74
File Size Uploaded
bqtools-json-0.4.74.tar.gz 104.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bqtools-json 0.4.74
File Interpreter ABI Platform
bqtools_json-0.4.74-py2-none-any.whl Python 2 none any Details

Total release size: 251.1 kB

Release files / bqtools-json-0.4.74.tar.gz

Download URL bqtools-json-0.4.74.tar.gz
Size 104.1 kB
Tags Source
SHA-256 checksum
How to use checksums
3389d011a4e035bf975954f8c88b9952fb895c6824479bdf27dae1afea16d9b3
BLAKE2b-256 checksum
How to use checksums
c6864556f2b0a2d7823d7da20d0786444457c816b213d91f5c2e44bdcb4deb56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.4.3 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/2.7.13

Release files / bqtools_json-0.4.74-py2-none-any.whl

Download URL bqtools_json-0.4.74-py2-none-any.whl
Size 146.9 kB
Tags Python 2
SHA-256 checksum
How to use checksums
eea7a3e67fe018dc4bdf631b77cb78a504b7ce77d01b2a642026f50d02c59688
BLAKE2b-256 checksum
How to use checksums
b856a9c2d733b73d67ee51391383ee8b546f833d445f778b29d68d1582436c06
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.4.3 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/2.7.13

Release history Release notifications | RSS feed

1.0.13

2 release files

1.0.10

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.4.122

1 release file

0.4.99

2 release files

0.4.98

2 release files

0.4.97

2 release files

0.4.93

2 release files

0.4.92

2 release files

0.4.91

2 release files

0.4.90

2 release files

0.4.89

2 release files

0.4.87

2 release files

0.4.85

2 release files

0.4.82

2 release files

0.4.81

2 release files

0.4.80

2 release files

0.4.78

2 release files

0.4.77

2 release files

0.4.76

2 release files

0.4.75

2 release files

This release

0.4.74 This release

2 release files

0.4.73

2 release files

0.4.71

2 release files

0.4.70

2 release files

0.4.66

2 release files

0.4.65

2 release files

0.4.64

2 release files

0.4.63

2 release files

0.4.62

2 release files

0.4.60

2 release files

0.4.59

2 release files

0.4.58

2 release files

0.4.57

2 release files

0.4.56

2 release files

0.4.55

2 release files

0.4.54

2 release files

0.4.53

2 release files

0.4.52

2 release files

0.4.51

2 release files

0.4.50

2 release files

0.4.49

2 release files

0.4.48

2 release files

0.4.47

2 release files

0.4.46

2 release files

0.4.45

2 release files

0.4.22

1 release file

0.4.21

2 release files

0.4.20

2 release files

0.4.10

1 release file

0.4.9

1 release file

0.4.8

1 release file

0.4.7

1 release file

0.4.5

1 release file

0.4.4

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page