- Require ingredient ids to be strings that don't start with underscore
- Handle NullType columns
- Update sqlalchemy to 1.4
- Drop support for SummarizeOver
- Handle NullType columns
- Properly quote order_by columns when using labels strategy
- Get engine consistently
- Ensure filters appear in sorted order
- Fix quoting of order_by columns when using labels strategy
- Improve quoting of order_by columns when using labels strategy
- Add lastday(date, datepart) for bigquery/snowflake
- Add a strict flag to automatic_filters with default true
- Add extract(datepart, date) and add an optional datepart to datediff
- Fix count(*) in PaginateCountOver
- Support expressions for database column names that contain spaces
- Fix default group by strategy for dimensions in snowflake and mssql databases
- Allow snowflake timestamps in expressions
- Allow expression builder to be passed to Shelf.from_config constructor.
- Add PaginateCountOver, a simpler pagination counter
- Add datediff function, improve aggregation
- Support a dictionary of literal or aggregate constants when defining shelves from config.
- Allow shelves to be built with more than one table reference.
- Allow automatic filters to be applied more than once to a recipe
- Ensure datatypes are always str
- cache parsed ingredient fields and the result of their validation in the context of a specific grammar
- Add a utility function make_schema
- Fix timestamp conversion functions in bigquery
- Support and operator in complex filters
- no changes
- Disallow literal-only expressions
- Allow count for boolean expressions
- Add caching for total_count
- Allow nested operators and values within an in operator
- "notin" filter operator is refactored to not use separate code from in. Instead we generate the in code and then
- wrap it in _not. This will change the sql generated when automatic filtering but the results will be the same.
- Code cleanups and refactorings
- Fix an error in ordering with mixed case columns/labels when using snowflake
- Update requirements to use lark
- Update requirements for dateparser past a broken version (See issue scrapinghub/dateparser#1045)
- Don't create expression grammar for columns with invalid names
- Breaking chagne: removed support for v1 ingredient configuration.
- Refactor tests to use unittests
- Add type annotations
- Add substr function
- Add support for like and ilike in parsed expressions
- Fix automatic filters when dimension ids contain double underscores
- Improve mssql support
- Fix for splitting operators in automatic filters
- Add directives that will convert dates and datetimes to the nearest year/month/day
- Allow compound selection to take a list of json encoded strings
- Update requirements
- Drop support for python3.6
- Save metric and dimension keys without deduping
- Fix aggregation for PaginateInline extension
- Add PaginateInline extension
- Fix datatype tracking in some cases
- Add to date syntax
- Avoid installing a top-level tests package in setup.py
- Fix datatype tracking in some cases
- Track the datatype used by ingredient columns
- Require parsed metrics to generate a number
- Improve automatic filtering with uncompilable ingredients
- Fix column_type for timestamps
- Apply a default ordering when paginating
- Fix sql generation of timestamp truncated columns in bigquery
- Improve the lark parser to validate explicitly using the database columns and column types available in the data.
- Run a validation phase on a parsed tree to make sure that arguments are correct types.
- Return descriptive errors
- Improve cross database support
- Like and ilike filter generation is more lenient
- Drop python2 support
- Add [syntax] to disambiguate database columns in parsed fields
- Save original config to ingredient when generating parsed fields.
- Fix issue with parsing >= and <=
- Update total_count to use caching
- Fix datatime auto conversions
- Drop python2.7 testing support (Python2.7 support will be dropped in 0.20)
- Improve type identification in Ingredient.build_filter
- Support and documentation for compound selection in automatic filters
- Support for different sqlalchemy generation when using parsed fields
- Add support for date conversions and percentiles in bigquery.
- Ingredient.build_filters now returns SQLAlchemy BinaryExpression rather than Filter objects.
- Fix a bug in filter binning
- Happy birthday, Zoe!
- Add automatic filter binning for redshift to reduce required query compilations
- Add parsed field converters to perform casting and date truncation.
- Fix Paginate search to use value roles
- Fix parsed syntax for field IS NULL
- Set bucket default label to "Not found"
- Use sureberus to validate lookup is a dictionary if present in Dimension config
- Fix to ensure pagination page is 1 even if there is no data
- On shelf construction, create InvalidIngredient for ingredients that fail construction
- Ignore order_by on a recipe if the ingredient has not been added to the dimensions or metrics.
- Allows case insensitivity in "kind:" and support "kind: Measure" as an alternative to "kind: Metric"
- Fix like/ilike and pagination_q filtering against dimensions that have a non-string ID.
- Fix parsed sql generation for AND and OR
- Fix parsed sql generation for division when one of the terms is a constant (like sum(people) / 100.0)
- Adds IS NULL as a boolean expression
- Adds "Intelligent date" calculations to allow more useful date calculations relative to current date
- Ignore order_by if ingredients have not been added
- Support measure as a synonym for metric and be lenient about capitalization in shelf config
- Support graceful ingredient failures when ingredients can not be constructed from config.
- Fix a pg8000 issue
- Extend grouping strategies so recipes can also order by column labels
- Create a new shelf configuration that uses lark to parse text into SQLAlchemy.
- remove flapjack_stack and pyhash dependencies
- Add percentile aggregations to metrics from config.
- Use more accurate fetched_from_cache caching query attribute
- Add grouping strategies so recipes can group by column labels
- Add Paginate extension
- Fix deterministic Anonymization in python3
- CI improvements
- Support multiple quickselects which are ORed together
- Replace quickfilter with quickselect
- Improve and publish docs on at recipe.readthedocs.io
- Happy birthday, Zoe!
- Add cache control options.
- Support date ranges in configuration defined ingredients
- Add like, ilike, between in ingredients defined from config
- Better handling in automatic filters when Nones appear in lists
- Remove dirty flag
- Ingredients defined from config support safe division by default
- [ISSUE-37] Allow Dimension defined from config to be defined using buckets
- First release on PyPI.