Releases: bullet-db/bullet-ui
Copy button
Closes #122
BQL 1.3.1 - HASH, Outer queries
This release supports Bullet BQL 1.3.1 and includes support for HASH
in BQL as well as Outer queries (nested queries) and various other keywords like UPPER
and LOWER
.
The UI no longer auto formats BQL strings into multi-lines due to ambiguity especially with nested queries.
BQL - EXPLODE, LATERAL VIEW, NOT RLIKE, NOT RLIKE ANY, TRIM, ABS, BETWEEN, NOT BETWEEN, SUBSTRING, UNIXTIMESTAMP. Bug fixes for Schema table, subfields, BQL autocomplete
This release supports Bullet BQL 1.2.0 for the following features in the BQL query building page:
EXPLODE
- for exploding maps and lists into constituents in the SELECT
or with a LATERAL VIEW
LATERAL VIEW
- to be used with EXPLODE
to generate a cross product with the exploded field and a row for all rows in a result
NOT RLIKE
, NOT RLIKE ANY
- the NOT versions of the supported RLIKE
and RLIKE ANY
BETWEEN
and NOT BETWEEN
- two functions to check if a numeric or a string typed value is between two other values or fields
SUBSTRING
- to get parts of a String with support for negative indexing
UNIXTIMESTAMP
- to get the current UTC unix timestamp or to convert a given date argument or field into a unix timestamp with an optional pattern for parsing the date
It also fixes the following bugs:
- Makes schema table load all expanded rows on open. The infinite scroll detection was not working and so would not load more than 2 rows previously.
- Fixes the dot autocomplete bug that did not respect the word before the dot in the autocomplete list. Now fields inside maps should autocomplete correctly
- Fixes the subfield in the querybuilder not causing dirty flag marking and therefore, losing subfield changes if that was the only change made
Link update for the API
api-bql -> api
Disconnects the Stomp handler on query end
Fixes a bug where the result page would sometime navigate to the error page because the WS was not properly disconnected
First Major Release - BQL (expressions, free-form BQL queries), SizeIs, ContainsKey, ContainsValue. Ember 3 Octane!
This release updates to the major Bullet 1.0 rewrite and is compatible with APIs and Backends using Bullet components 1.0+. Notably, this release includes a way to write BQL (which is the only supported query format now in Bullet) queries through the UI. The QueryBuilder way of building queries is still fully supported (and augmented) but it cannot express everything BQL can.
- There is now a new BQL entry page for Queries that lets you write any BQL query that cannot be expressed in the Query Builder. The BQL entry page can autocomplete and understands your schema. The
defaultQuery
now allows you to only provide a static BQL query or an endpoint that provides a dynamic BQL query. The JSON format of queries is not supported. - The QueryBuilder page now supports the rest of the filter operators (SizeIs, ContainsKey, ContainsValue) and is now fully type-aware allowing for the fully extended type-system that Bullet 1.0 provides. It only understands and works with the new way of specifying the columns from the API (or your own if you choose to roll your own). The QueryBuilder can also convert your queries to their BQL versions if you want to (the other way is not possible).
- Everything has been rewritten with native JS classes and uses Ember 3.20 with Glimmer components.
- Settings changes:
- To Pass in the validation endpoint on the API, use
validationPath
. Defaults tovalidate-query
- The units for
everyForTimeBasedWindow
has been changed to ms from secs. So multiply any existing values used by 1000 defaultQuery
now only accepts a BQL string or a URL to fetch a BQL query.- The defaults for
aggregationMaxSize
has been changed from512
to500
anddurationMaxSecs
from120
to9007199254740
to match the defaults from bullet-core.
- To Pass in the validation endpoint on the API, use
Due to the significant rewrite, both existing queries and results will be wiped when updating to this version from an existing version.
New Logo!
Timeseries Graphing, Bar, Pie Charts and FontAwesome
This version overhauls the results page to make it more compact and powerful. It adds another aggregate mode (in addition to appending all records for Raw, Record windowed queries) called TimeSeries mode to let you view data across your windows.
It also adds Bar and Pie charts to the regular charting mode (in addition to what was already supported through the Pivot table). The interfaces for accessing all have been simplified and use meaningful buttons.
Timeseries Graphing
We added graphing your dimensions as lines across your windows. Currently, this is enabled only for queries with Time Based windows. When viewing data in this mode, it shows all your rows across all your windows by injecting the window arrival time and window number into each row. You can then use these for pivoting or downloading as you wish. When graphing, it works by taking all unique values for your non-numeric dimensions in all your windows as datasets and plotting them as individual lines on a graph where the X axis is the window arrival time. This lets you plot measures across time and see how they change. Coupled with Auto update you can now put up a graph of a measure you're interested it and watch it move as your windows come in over time!
Pie charts are not supported in this mode.
Other changes.
This release also removes glyphicons and replaces them with FontAwesome and fixes some bugs with CSS (on the queries table) and fixes incorrect query summaries showing up on the results page.
Default Query support
This release removes the defaultFilter
setting that allowed you to specify a default starting filter that would added to every newly created query (either as JSON or a URL that allowed you to dynamically create it) and replaces it with a defaultQuery
that lets you specify an entire query in addition to just filters. You may still provide an URL to dynamically compute the entire query.
Windowing! IndexedDB! Ember 3!
This is a huge release that incorporates a lot of changes. In terms of features, we have two really big ones.
Incremental Updates or Windowing
Incremental Updates or Windowing or getting results while the query is running is now in the UI! This catches up the UI with the latest versions at the time of writing this. For windowing to work properly, it is highly recommended you use these versions or above.
Bullet Core 0.3.4
Bullet Spark
Bullet Storm 0.8.2
Bullet Web Service 0.2.2
You can now configure a window (record by record - Sliding, in fixed increments of time - Tumbling are the two main classes supported currently) in the query building page and the results page will change accordingly to let you switch between windows (for time based windows), or auto aggregate them into the same view (record based windows). Sliding windows are currently only supported for Raw queries. You can now finally see generated data as it arrives through your streaming system!
New Settings
The UI now uses the websocket endpoint from your Bullet Web Service. Note that the modelVersion setting has been bumped and all data will be wiped just in case. To configure these, the following new/old settings have been changed:
{
"queryPath": "ws-query",
"queryStompRequestChannel": "/server/request",
"queryStompResponseChannel": "/client/response",
"defaultValues": {
"windowEmitFrequencyMinSecs": 1,
"everyForRecordBasedWindow": 1,
"everyForTimeBasedWindow": 2,
}
}
The default metadata keys have been tweaked to match the latest versions of Bullet Core. New keys have also been added.
There are also a bunch of QoL changes around the UI that are too numerous to list here.
IndexedDB
We have now fully tested and integrated ember-localforage to abstract out the local storage default. IndexedDB is the default storage layer used instead of LocalStorage. This increases the amount of queries and results that can be stored from ~5 MB to 30+ GB (defaults). You should no longer run into storage issues when running a few queries and saving results!
Ember 3
The code structure has been refactored for Ember 3 but due a bug with Ember, we're still on ember-source 2.18
. All the tests and code have been refactored to be in Ember 3 conventions and styles. Still waiting on a couple of addons to migrate to Ember 3 compatible code.