What is Perspective?
Perspective is an interactive analytics and data visualization component, which is especially well-suited for large and/or streaming datasets. Use it to create user-configurable reports, dashboards, notebooks and applications, then deploy stand-alone in the browser, or in concert with Python and/or Jupyterlab.
Features
A fast, memory efficient streaming query engine, written in C++ and compiled for both WebAssembly and Python, with read/write/streaming for Apache Arrow, and a high-performance columnar expression language based on ExprTK.
A framework-agnostic User Interface packaged as a Custom Element, powered either in-browser via WebAssembly or virtually via WebSocket server (Python/Node).
A JupyterLab widget and Python client library, for interactive data analysis in a notebook, as well as scalable production Voila applications.
JavaScript
Interactive dashboards built on Perspective.js Custom Elements are easy to integrate into any web application framework.
Using Perspective's simple query language,
elements like
<perspective-viewer> can be
symmetrically configured via API or User
interaction. Web Applications built with
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.js relies on WebAssembly for excellent query calculation time, and Apache Arrow for its conservative memory footprint and efficient data serialization.
Python
perspective-python, built on the
same C++ data engine used by the
WebAssembly version, implements the Perspective API directly in
Python, either as a 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 nearly instant load. Or - efficiently stream
the entire dataset to the WebAssembly runtime via
Apache Arrow, and give your server a break!
For Researchers and Data Scientists,
PerspectiveWidget is available as a
Jupyter/JupyterLab
widget, allowing interactive
Pandas
and
Apache Arrow
visualization within a notebook.