Backlog

Iteration +1

  • Read and write compressed files. orjson uses xopen already, which can do it transparently

  • Allow processing larger-than-memory files

  • Allow specifying chunk size

  • Docs: It is recommended to use JSONL / NDJSON files for processing, as they support streaming

  • Docs: Report about throughput. 5,000 batch size; Main memory 1 GB.

    • GT: 11 GB input file; 1,300-1,800 records/s; 22 minutes total runtime; two simple jqlang expressions

  • Add --overwrite option

  • Unlock providing variable names per –arg, –argjson, –slurpfile, –rawfile, –args, –jsonargs

  • Make use of https://github.com/ashb/jqrepl?

Iteration +2

  • Documentation: jqlang stdlib’s to_object function for substructure management

  • Documentation: Type casting echo '{"a": 42, "b": {}, "c": []}' | jq -c '.|= (.b |= objects | .c |= objects)' {"a":42,"b":{}}

  • Renaming currently needs JSON Pointer support, implemented in Python. Alternatively, can jq also do it?

  • Simple IFTTT: When condition, do that (i.e. add tag)

  • Documentation: jq functions

  • Documentation: Update “What’s Inside”

  • Documentation: Usage (build (API, from_yaml), apply)

  • Documentation: How to extend function.{jq,py}

  • https://arrow.apache.org/docs/cpp/gandiva.html

Documentation

- Omit records `and .value.bill_contact.id != ""`
# Only accept `email` elements that are objects.
#and (if (.value | index("emails")) then (.value.emails[].type | type) == "object" else true end)

# Exclude a few specific documents.
# TODO: Review documents once more to discover more edge cases.
.[] |= select(
and ._id != "55d71c8ce4b02210dc47b10f"
)

# Some early `phone` elements have been stored wrongly,
# all others are of type OBJECT.
#and (.value.phone | type) != "array"

# Some early `urls` elements have been stored wrongly,
# all others are of type ARRAY.
#and (.value.urls | type) != "object"

Iteration +3

Demonstrate more use cases, like…

Iteration +4

Done

  • Refactor module namespace to zyp, then loko, then tikray

  • Documentation

  • Apply to MongoDB Table Loader in CrateDB Toolkit

  • Model: Toggle rule active / inactive by respecting disabled flag

  • Documentation: How to delete attributes from lists using jq?

  • Review and test jqlang stdlib’s to_object function

  • Support for JSONL