Quix Streams Release 3.18.0
Quix Streams v3.18.0 introduces a powerful new feature for enriching streaming data with PostgreSQL lookups.

Quix Streams v3.18.0: Introducing PostgreSQL Lookup Joins for Real-time Data Enrichment
We're excited to announce the release of Quix Streams v3.18.0, which introduces a powerful new feature for enriching streaming data with PostgreSQL lookups. This release continues our program of making it easier and faster to join time-series data with other real-time data or slow moving and static data.
PostgreSQL Lookup Joins
The highlight of this release is the new `PostgresLookup`, which enables enrichment of streaming data with information from PostgreSQL databases. This feature is particularly valuable for scenarios where you need to enhance streaming data with reference data or additional context stored in a relational database.
Key Benefits
1. Efficient Data Enrichment: Enrich streaming data with reference data from PostgreSQL in real-time
2. Built-in Caching: Implements an LRU (Least Recently Used) cache with configurable TTL to minimize database load
3. Persistent Connections: Maintains efficient database connections for optimal performance
4. Simple Integration: Easily add database-backed lookups to your streaming pipelines with minimal code
How It Works
Here's a quick example of how to use the new PostgreSQL Lookup feature:
from quixstreams import Application
from quixstreams.dataframe.joins.lookups.postgresql import PostgresLookup
app = Application(...)
sdf = app.dataframe(...)
# Initialize PostgresLookup with your database credentials
lookup = PostgresLookup(
host="<host>",
port=5432,
dbname="<db>",
user="<user>",
password="<password>",
cache_size=1000,
)
# Define the fields to join from the database
fields = {
"joined": lookup.field(
table="my_table",
columns=["table_column1", "table_column2"],
on="table_column1"
),
}
# Perform the lookup join
sdf = sdf.join_lookup(lookup, fields, on="my_record_field")
app.run()
Use Cases
- Real-time Customer Data Enrichment: Enhance streaming events with customer profiles stored in PostgreSQL
- Reference Data Lookups: Join streaming data with reference data like product catalogs or pricing information
- Contextual Enrichment: Add additional context to events based on historical data
Bug Fixes
- Fixed a typo in the Producer class
Getting Started
To start using the new PostgreSQL Lookup feature, upgrade to Quix Streams v3.18.0:
pip install --upgrade quixstreams
For more detailed information, check out the PostgresLookup API documentation.
We're excited to see how you'll use this new capability to enhance your real-time data processing pipelines. If you have any questions or feedback, feel free to reach out on our GitHub repository. (And please leave a⭐)
What’s a Rich Text element?
The rich text element allows you to create and format headings, paragraphs, blockquotes, images, and video all in one place instead of having to add and format them individually. Just double-click and easily create content.
Static and dynamic content editing
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila!
How to customize formatting for each rich text
Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

Check out the repo
Our Python client library is open source, and brings DataFrames and the Python ecosystem to stream processing.

Interested in Quix Cloud?
Take a look around and explore the features of our platform.

Interested in Quix Cloud?
Take a look around and explore the features of our platform.
