Joule
  • Welcome to Joule's Docs
  • Why Joule?
    • Joule capabilities
  • What is Joule?
    • Key features
    • The tech stack
  • Use case enablement
    • Use case building framework
  • Concepts
    • Core concepts
    • Low code development
    • Unified execution engine
    • Batch and stream processing
    • Continuous metrics
    • Key Joule data types
      • StreamEvent object
      • Contextual data
      • GeoNode
  • Tutorials
    • Getting started
    • Build your first use case
    • Stream sliding window quote analytics
    • Advanced tutorials
      • Custom missing value processor
      • Stateless Bollinger band analytics
      • IoT device control
  • FAQ
  • Glossary
  • Components
    • Pipelines
      • Use case anatomy
      • Data priming
        • Types of import
      • Processing unit
      • Group by
      • Emit computed events
      • Telemetry auditing
    • Processors
      • Common attributes
      • Filters
        • By type
        • By expression
        • Send on delta
        • Remove attributes
        • Drop all events
      • Enrichment
        • Key concepts
          • Anatomy of enrichment DSL
          • Banking example
        • Metrics
        • Dynamic contextual data
          • Caching architecture
        • Static contextual data
      • Transformation
        • Field Tokeniser
        • Obfuscation
          • Encryption
          • Masking
          • Bucketing
          • Redaction
      • Triggers
        • Change Data Capture
        • Business rules
      • Stream join
        • Inner stream joins
        • Outer stream joins
        • Join attributes & policy
      • Event tap
        • Anatomy of a Tap
        • SQL Queries
    • Analytics
      • Analytic tools
        • User defined analytics
          • Streaming analytics example
          • User defined analytics
          • User defined scripts
          • User defined functions
            • Average function library
        • Window analytics
          • Tumbling window
          • Sliding window
          • Aggregate functions
        • Analytic functions
          • Stateful
            • Exponential moving average
            • Rolling Sum
          • Stateless
            • Normalisation
              • Absolute max
              • Min max
              • Standardisation
              • Mean
              • Log
              • Z-Score
            • Scaling
              • Unit scale
              • Robust Scale
            • Statistics
              • Statistic summaries
              • Weighted moving average
              • Simple moving average
              • Count
            • General
              • Euclidean
        • Advanced analytics
          • Geospatial
            • Entity geo tracker
            • Geofence occupancy trigger
            • Geo search
            • IP address resolver
            • Reverse geocoding
            • Spatial Index
          • HyperLogLog
          • Distinct counter
      • ML inferencing
        • Feature engineering
          • Scripting
          • Scaling
          • Transform
        • Online predictive analytics
        • Model audit
        • Model management
      • Metrics engine
        • Create metrics
        • Apply metrics
        • Manage metrics
        • Priming metrics
    • Contextual data
      • Architecture
      • Configuration
      • MinIO S3
      • Apache Geode
    • Connectors
      • Sources
        • Kafka
          • Ingestion
        • RabbitMQ
          • Further RabbitMQ configurations
        • MQTT
          • Topic wildcards
          • Session management
          • Last Will and Testament
        • Rest endpoints
        • MinIO S3
        • File watcher
      • Sinks
        • Kafka
        • RabbitMQ
          • Further configurations
        • MQTT
          • Persistent messaging
          • Last Will and Testament
        • SQL databases
        • InfluxDB
        • MongoDB
        • Geode
        • WebSocket endpoint
        • MinIO S3
        • File transport
        • Slack
        • Email
      • Serialisers
        • Serialisation
          • Custom transform example
          • Formatters
        • Deserialisers
          • Custom parsing example
    • Observability
      • Enabling JMX for Joule
      • Meters
      • Metrics API
  • DEVELOPER GUIDES
    • Setting up developer environment
      • Environment setup
      • Build and deploy
      • Install Joule
        • Install Docker demo environment
        • Install with Docker
        • Install from source
        • Install Joule examples
    • Joulectl CLI
    • API Endpoints
      • Mangement API
        • Use case
        • Pipelines
        • Data connectors
        • Contextual data
      • Data access API
        • Query
        • Upload
        • WebSocket
      • SQL support
    • Builder SDK
      • Connector API
        • Sources
          • StreamEventParser API
        • Sinks
          • CustomTransformer API
      • Processor API
      • Analytics API
        • Create custom metrics
        • Define analytics
        • Windows API
        • SQL queries
      • Transformation API
        • Obfuscation API
        • FieldTokenizer API
      • File processing
      • Data types
        • StreamEvent
        • ReferenceDataObject
        • GeoNode
    • System configuration
      • System properties
  • Deployment strategies
    • Deployment Overview
    • Single Node
    • Cluster
    • GuardianDB
    • Packaging
      • Containers
      • Bare metal
  • Product updates
    • Public Roadmap
    • Release Notes
      • v1.2.0 Join Streams with stateful analytics
      • v1.1.0 Streaming analytics enhancements
      • v1.0.4 Predictive stream processing
      • v1.0.3 Contextual SQL based metrics
    • Change history
Powered by GitBook
On this page
  • Modern use case development platform
  • Key features include
  • Low code
  • Key language elements
  • Example
  • Analytics enablement
  • Stream processors
  • Data connectors
  • Contextual data
  • APIs & SDK
  • Observability
  • Flexible Deployment

Was this helpful?

  1. What is Joule?

Key features

Build, deploy and scale analytic use cases fast

PreviousWhat is Joule?NextThe tech stack

Last updated 5 months ago

Was this helpful?

Modern use case development platform

As a user of Joule, your main focus will be building use cases that address point-in-time or strategic business needs - there is no need to continually rebuild technology assets. Just reuse existing components to kick start the process and add new assets when needed.

Joule supports turning your needs in to deployable runtime assets.​

Key features include

  1. Low code development platform Effortlessly create use cases with Joule DSL, enabling swift development of versatile stream processing pipelines.

  2. Analytics enablement Harness ML model support, auditing, geospatial capabilities, streaming window analytics, SQL metrics engine and triggers for enhanced functionality.

  3. Stream processors Enrich, encrypt and mask data effortlessly with out-of-the-box processors and supported scripting languages (Node.js, JavaScript, Python).

  4. Data connectors Effortlessly consume and stream consistent data with out-of-the-box connectors, including Kafka, MQTT, data lakes, NoSQL, web sockets, OpenAPI and more.

  5. Contextual data Enrich streaming events with dynamic, static and slow-moving contextual data using embedded local caching.

  6. APIs & SDK An extendable API is available to empower developers in building custom components.

  7. Observability All components have processing metric counters which can be monitored using external solutions

  8. Flexible deployment Joule has been designed to be platform agnostic, offering seamless deployment options whether you choose a local, on-premise or cloud-based environment.

In the following section, we will further explore each feature.


Low code

At its core, Joule adheres to the design principle of delivering a low-code use case platform that fosters rapid development iterations for impactful business outcomes.

Packaged with a dedicated use case language, DSL and a suite of reusable assets. Joule empowers developers to commence building immediately after installation.

Key language elements

  • Flexible event subscriptions and publishing

  • Stream event processing pipeline

  • Custom SQL Metrics definition

  • Extendability through custom components

  • Mainstream product integrations

Example

stream:
  name: standardQuoteAnalyticsStream
  enabled: true
  eventTimeType: EVENT_TIME
  sources: [ nasdaq_quotes_stream ]

  initialisation:
    sql import:
      schema: standardQuoteAnalyticsStream
      parquet:
        - table: quote
          asView: false
          files: ['quotes*.parquet']
          index:
            fields: ['symbol']
            unique: false

  processing unit:
    metrics engine:
      runtime policy:
        frequency: 1
        startup delay: 2
        time unit: MINUTES

      foreach metric compute:
        metrics:
          - name: BidMovingAverage
            metric key: symbol
            table definition: standardQuoteAnalyticsStream.BidMovingAverage (symbol VARCHAR, avg_bid_min FLOAT, avg_bid_avg FLOAT,avg_bid_max FLOAT)
            query:
              SELECT symbol,
              MIN(bid) AS 'avg_bid_min',
              AVG(bid) AS 'avg_bid_avg',
              MAX(bid) AS 'avg_bid_max'
              FROM standardQuoteAnalyticsStream.quote
              WHERE
              ingestTime >= date_trunc('minutes',now() - INTERVAL 2 MINUTES) AND ingestTime <= date_trunc('minutes',now())
              GROUP BY symbol
              ORDER BY 1;
            truncate on start: true
            compaction policy:
              frequency: 8
              time unit: HOURS

    pipeline:
      - filter:
          expression: "symbol != 'A'"

  emit:
    select: "symbol, BidMovingAverage.avg_bid_max;WHERE symbol=${symbol} 'avg_bid_max'"

  group by:
    - symbol

Analytics enablement

Joule provides three flexible methods to build analytical insights. Each method is describe below.

The integration of streaming analytics serves as a pivotal feature, empowering the evolution of sophisticated use case development, including applications like geospatial analytics for marketing, business analytics and feature preparation for machine learning predictions.

Key features

  • Tumbling and sliding windows

  • Standard statistical functions

  • Custom analytic functions

  • Geospatial analytics (Geo Tracker, Geofence occupancy, spatial index)

Example

time window:
  emitting type: tumblingQuoteAnalytics
  aggregate functions:
    FIRST: [ask]
    LAST: [ ask ]
    MIN: [ ask ]
    MAX: [ bid ]
    SUM: [ volume ]
    MEAN: [ volatility ]
    VARIANCE: [ volatility ]
    STDEV: [ volatility ]
  policy:
    type: tumblingTime
    window size: 5000

Utilising machine learning models enables the delivery of streaming predictions, offering versatility for applications in both start-of-day batch processing and real-time prediction services to bolster intra-day business operations.

Key features

  • Predictive Model Markup Language (PMML)

  • In-place model refresh / replacement

  • Model versioning control

  • Prediction and model auditing

  • Feature engineering (binning, scaling, log transform, and scripting)

Example

pmml predictor:
  name: irisScorer
  model: ./models/iris_rf.pmml
  response field: flowerPrediction
  
  audit configuration:
    target schema: ml_audit
    queue capacity: 5000
    flush frequency: 300

Joule offers a comprehensive global metrics engine designed to facilitate the development of intricate use cases. Developers can articulate metrics using standard ANSI SQL and specify their execution frequency using the Joule DSL. These defined metrics are seamlessly integrable into the defined streaming pipeline.

Key features

  • ANSI SQL based metrics

  • Runtime policy to schedule metric generation

  • Metrics accessible within pipeline processes and projection

  • Export RestAPI

  • In-memory column database

Example

metrics engine:
    runtime policy:
      frequency: 1
      startup delay: 2
      time unit: MINUTES

    foreach metric compute:
      metrics:
        -
          name: BidMovingAverage
          metric key: symbol
          table definition: standardQuoteAnalyticsStream.BidMovingAverage (symbol VARCHAR, avg_bid_min FLOAT, avg_bid_avg FLOAT,avg_bid_max FLOAT)
          query:
            SELECT symbol,
            MIN(bid) AS 'avg_bid_min',
            AVG(bid) AS 'avg_bid_avg',
            MAX(bid) AS 'avg_bid_max'
            FROM standardQuoteAnalyticsStream.quote
            WHERE
            ingestTime >= date_trunc('minutes',now() - INTERVAL 2 MINUTES) AND ingestTime <= date_trunc('minutes',now())
            GROUP BY symbol
            ORDER BY 1;
          truncate on start: true
          compaction policy:
            frequency: 8
            time unit: HOURS

Stream processors

Event processing is executed through the definition of a processor's pipeline.

Events undergo sequential processing utilising a micro-batch methodology, a technique employed to boost processing throughput while optimising the utilisation of underlying hardware capabilities.

Because Processors are a critical component, we have listed them below.

Data connectors

Data connectors, sources and sinks are a key component within the Joule low-code ecosystem that consume and distribute data.

Contextual data

For Joule applications, contextual data is crucial for enabling advanced and insightful stream processing.

By seamlessly integrating contextual data with real-time events, the system delivers enriched processing outcomes and better informed insights.

APIs & SDK

A Java SDK for developers is supplied to extend platform capabilities, enabling the customisation and enhancement of processors and data transports.

APIs

Rest base APIs to access key Joule functions

  • Data access APIs

  • Deployment management APIs

SDK

Flexible SDK to enable platform extensibility

  • User defined analytics

  • Processors

  • Data connectors

Observability

Each processing component in Joule furnishes a standard set of metrics, offering insights to users into the number of events received, processed, discarded and failed.

Furthermore, with the SQL engine enabled, both raw and processed events are stored, making them queryable and exportable for enhanced analytical capabilities.

Flexible Deployment

Joule has been designed to be platform agnostic, offering seamless deployment options whether you choose a local, on-premise or cloud-based environment.

Joule is packaged as a Docker container for simplified deployment configurations or as a standalone binary, providing flexibility to meet diverse deployment needs.

New processors are constantly added to the platform. Please for an updated list

Processors

Filtering

Filtering event based using a configurable criteria or a an expression. Example use cases is customer opt-out, missing data elements, out of range etc

Enrichment

Enrichment of streaming events with a embedded low-latency data caching solution

Transformation

Event field tokenisation, encryption, masking, bucketing and redaction

Triggers

Real-time alerts and event triggers using rule based processing and delta CDC processing

Event tap

Tap events directly in to an in-memory database to enable on / off line processing

Scripting

Execute external scripts or defined expression within the use case DSL using supported scripting languages (Node.js, JavaScript, Python)

Metrics

A SQL compliant metrics engine which computes scheduled metrics

Machine learning

Leverage streaming online predictions to drive insights to action

Analytics

Streaming analytics using event windows, expressions, scripts and much more

contact Fractalworks
Connectors
Contextual data
API Endpoints
Builder SDK
Observability
Joule high level architecture