Perspective is an interactive visualization component for large, real-time datasets. Originally developed for J.P. Morgan's trading business, Perspective makes it simple to build real-time & user configurable analytics entirely in the browser, or in concert with Python and/or Jupyterlab. Use it to create reports, dashboards, notebooks and applications, with static data or streaming updates via Apache Arrow. As a library, Perspective provides both:
A fast, memory efficient streaming query engine, written in C++ and compiled for both WebAssembly and Python, with read/write/stream/virtual support for Apache Arrow.
A framework-agnostic User Interface Custom Element and Jupyterlab Widget, via WebWorker (WebAssembly) or virtually via WebSocket (Python/Node), and a suite of Datagrid and D3FC Chart plugins.
Query-driven dashboards built on Perspective Custom Elements are completely user-configurable, and easy to integrate into any application framework.
Using Perspective's simple relational grammar, elements like
<perspective-workspace>
can be symmetrically configured, by API or
through the User Interface, and emit dataset-aware Events for scriptable
interactivity. Web Applications built on Perspective
Custom Elements can be re-hydrated from their serialized state, driven
from external Events, or persisted to any store. Workspaces can mix
virtual, server-side Python data with in-browser client data seamlessly, and
independent data Views can be cross-filtered, duplicated, exported, stacked
and saved.
To achieve Desktop-like performance in the Browser, Perspective for JavaScript relies on WebAssembly for excellent query calculation performance, and Apache Arrow for its conservative memory footprint and high-performance data serialization.
perspective-python
, built on the same C++ data engine used by the
WebAssembly version, implements
the Perspective API directly in Python, either as a high-performance
Streaming Arrow or Virtualized Server for Production, or as an embedded
JupyterLab Widget for Research.
For Application Developers, virtualized <perspective-viewer>
will only
consume the data necessary to render the current screen, enabling ludicrous size
datasets with instant-load after they've been server initialzed. Or - Clone
the entire dataset to the WebAssembly runtime via efficiently via Arrow, and
give your server a break!
For Researchers and Data Scientists, PerspectiveWidget
is available as an
embedded widget within JupyterLab,
allowing Pandas and Arrow preview, transform,
export and persist Perspective visualizations interactively.