Skip to main content

BuildStatus CoverageStatus Codacy Docs PyPi License

fireant is a a data analysis tool used for quickly building charts, tables, reports, and dashboards. It defines a schema for configuring metrics and dimensions which removes most of the leg work of writing queries and formatting charts. fireant even works great with Jupyter notebooks and in the Python shell providing quick and easy access to your data.

Read more at http://fireant.readthedocs.io/en/latest/

Installation

To install fireant, run the following command in the terminal:

pip install fireant

Introduction

fireant arose out of an environment where several different teams, each working with data sets often with crossover, were individually building their own dashboard platforms. fireant was developed as a centralized way of building dashboards without the legwork.

fireant is used to create configurations of data sets using DataSet which backs a database table containing analytics and defines sets of Field. A Field can be used to group data by properties, such as a timestamp, an account, a device type, etc, or to render quantifiers such as clicks, ROI, conversions into a widget such as a chart or table.

A DataSet exposes a rich builder API that allows a wide range of queries to be constructed that can be rendered as several widgets. A DataSet can be used directly in a Jupyter notebook, eliminating the need to write repetitive custom queries and render the data in visualizations.

Data Sets

DataSet are the core component of fireant. A DataSet is a representation of a data set and is used to execute queries and transform result sets into widgets such as charts or tables.

A DataSet requires only a couple of definitions in order to use: A database connector, a database table, join tables, and dimensions and metrics. Metrics and Dimension definitions tell fireant how to query and use data in widgets. Once a dataset is created, it’s query API can be used to build queries with just a few lines of code selecting which dimensions and metrics to use and how to filter the data.

Instantiating a Data Set

from fireant.dataset import *
from fireant.database import VerticaDatabase
from pypika import Tables, functions as fn

vertica_database = VerticaDatabase(user='myuser', password='mypassword')
analytics, customers = Tables('analytics', 'customers')

my_dataset = DataSet(
    database=vertica_database,
    table=analytics,
    fields=[
        Field(
            # Non-aggregate definition
            alias='customer',
            definition=customers.id,
            label='Customer'
        ),
        Field(
            # Date/Time type, also non-aggregate
            alias='date',
            definition=analytics.timestamp,
            type=DataType.date,
            label='Date'
        ),
        Field(
            # Text type, also non-aggregate
            alias='device_type',
            definition=analytics.device_type,
            type=DataType.text,
            label='Device_type'
        ),
        Field(
            # Aggregate definition (The SUM function aggregates a group of values into a single value)
            alias='clicks',
            definition=fn.Sum(analytics.clicks),
            label='Clicks'
        ),
        Field(
            # Aggregate definition (The SUM function aggregates a group of values into a single value)
            alias='customer-spend-per-clicks',
            definition=fn.Sum(analytics.customer_spend / analytics.clicks),
            type=DataType.number,
            label='Spend / Clicks'
        )
    ],
    joins=[
        Join(customers, analytics.customer_id == customers.id),
    ],

Building queries with a Data Set

Use the query property of a data set instance to start building a data set query. A data set query allows method calls to be chained together to select what should be included in the result.

This example uses the data set defined above

from fireant import Matplotlib, Pandas, day

 matplotlib_chart, pandas_df = my_dataset.data \
      .dimension(
         # Select the date dimension with a daily interval to group the data by the day applies to
         # dimensions are referenced by `dataset.fields.{alias}`
         day(my_dataset.fields.date),

         # Select the device_type dimension to break the data down further by which device it applies to
         my_dataset.fields.device_type,
      ) \
      .filter(
         # Filter the result set to data to the year of 2018
         my_dataset.fields.date.between(date(2018, 1, 1), date(2018, 12, 31))
      ) \
      # Add a week over week reference to compare data to values from the week prior
      .reference(WeekOverWeek(dataset.fields.date))
      .widget(
         # Add a matpotlib chart widget
         Matplotlib()
            # Add axes with series to the chart
            .axis(Matplotlib.LineSeries(dataset.fields.clicks))

            # metrics are referenced by `dataset.metrics.{alias}`
            .axis(Matplotlib.ColumnSeries(
                my_dataset.fields['customer-spend-per-clicks']
            ))
      ) \
      .widget(
         # Add a pandas data frame table widget
         Pandas(
             my_dataset.fields.clicks,
             my_dataset.fields['customer-spend-per-clicks']
         )
      ) \
      .fetch()

 # Display the chart
 matplotlib_chart.plot()

 # Display the chart
 print(pandas_df)

License

Copyright 2020 KAYAK Germany, GmbH

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Crafted with ♥ in Berlin.

Release files for fireant 8.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fireant 8.1.0
File Size Uploaded
fireant-8.1.0.tar.gz 341.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fireant 8.1.0
File Interpreter ABI Platform
fireant-8.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 532.9 kB

Release files / fireant-8.1.0.tar.gz

Download URL fireant-8.1.0.tar.gz
Size 341.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f5358ad5a77769f9b406108a700162cc33f4e20ef19a86d6525c15ad3a85c0cb
BLAKE2b-256 checksum
How to use checksums
6f16b371e6805257db22c4bce5f1cb316673c7318eaa1b9c458ac035aaac42dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 20, 2026.

Transparency log

Release files / fireant-8.1.0-py3-none-any.whl

Download URL fireant-8.1.0-py3-none-any.whl
Size 191.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
92a3e47039a6f8ca5337bd43e69e61072c490f2fe3cc31852c2a84f1b0a10e14
BLAKE2b-256 checksum
How to use checksums
0ce554378bda5cfd6eede45882d923b42e841f08b6cf1982781c55b009cd5e72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 20, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

8.1.0 This release

2 release files

8.0.5

2 release files

8.0.4

2 release files

8.0.3

2 release files

8.0.2

2 release files

8.0.1

2 release files

8.0.0

2 release files

7.9.0

1 release file

7.8.6

1 release file

7.8.5

1 release file

7.8.4

1 release file

7.8.3

1 release file

7.8.2

1 release file

7.8.0

1 release file

7.7.8

1 release file

7.7.7

1 release file

7.7.6

1 release file

7.7.5

1 release file

7.7.4

1 release file

7.7.3

1 release file

7.7.2

1 release file

7.7.1

1 release file

7.7.0

1 release file

7.6.6

1 release file

7.6.5

1 release file

7.6.4

1 release file

7.6.3

1 release file

7.6.2

1 release file

7.6.1

1 release file

7.6.0

1 release file

7.5.0

1 release file

7.4.2

1 release file

7.4.1

1 release file

7.4.0

1 release file

7.3.1

1 release file

7.3.0

1 release file

7.2.5

1 release file

7.2.4

1 release file

7.2.3

1 release file

7.2.2

1 release file

7.2.1

1 release file

7.2.0

1 release file

7.1.0

1 release file

7.0.3

1 release file

7.0.2

1 release file

7.0.1

1 release file

7.0.0

1 release file

6.0.0

1 release file

5.13.4

1 release file

5.13.3

1 release file

5.13.2

1 release file

5.13.1

1 release file

5.13.0

1 release file

5.12.1

1 release file

5.12.0

1 release file

5.11.0

1 release file

5.10.2

1 release file

5.10.1

1 release file

5.10.0

1 release file

5.9.3

1 release file

5.9.2

1 release file

5.9.1

1 release file

5.9.0

1 release file

5.8.1

1 release file

5.8.0

1 release file

5.7.0

1 release file

5.6.0

1 release file

5.5.1

1 release file

5.5.0

1 release file

5.4.8

1 release file

5.4.7

1 release file

5.4.6

1 release file

5.4.5

1 release file

5.4.4

1 release file

5.4.3

1 release file

5.4.2

1 release file

5.4.1

1 release file

5.4.0

1 release file

5.3.6

1 release file

5.3.5

1 release file

5.3.4

1 release file

5.3.3

1 release file

5.3.2

1 release file

5.3.1

1 release file

5.3.0

1 release file

5.2.1

1 release file

5.2.0

1 release file

5.1.1

1 release file

5.0.4

1 release file

5.0.3

1 release file

5.0.2

1 release file

5.0.1

1 release file

5.0.0

1 release file

4.0.4

1 release file

4.0.3

1 release file

4.0.2

1 release file

4.0.1

1 release file

4.0.0

1 release file

3.2.0

1 release file

3.1.8

1 release file

3.1.7

1 release file

3.1.6

1 release file

3.1.5

1 release file

3.1.4

1 release file

3.1.3

1 release file

3.1.2

1 release file

3.1.1

1 release file

3.1.0

1 release file

3.0.12

1 release file

3.0.11

1 release file

3.0.10

1 release file

3.0.9

1 release file

3.0.8

1 release file

3.0.7

1 release file

3.0.6

1 release file

3.0.5

1 release file

3.0.4

2 release files

3.0.3

1 release file

3.0.2

2 release files

3.0.1

2 release files

3.0.0

1 release file

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.1

2 release files

2.0.0

1 release file

1.6.4

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

1 release file

1.4.13

1 release file

1.4.12

1 release file

1.4.11

1 release file

1.4.10

1 release file

1.4.9

1 release file

1.4.8

1 release file

1.4.7

1 release file

1.4.6

1 release file

1.4.5

1 release file

1.4.4

1 release file

1.4.3

1 release file

1.4.2

1 release file

1.4.1

1 release file

1.4.0

1 release file

1.3.1

1 release file

1.3.0

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.19.3

1 release file

0.19.2

1 release file

0.19.1

1 release file

0.19.0

1 release file

0.18.0

1 release file

0.17.5

1 release file

0.17.4

1 release file

0.17.3

1 release file

0.17.2

1 release file

0.17.1

1 release file

0.17.0

1 release file

0.16.2

1 release file

0.16.1

1 release file

0.16.0

1 release file

0.15.4

1 release file

0.15.3

1 release file

0.15.2

1 release file

0.15.1

1 release file

0.15.0

1 release file

0.14.8

1 release file

0.14.7

1 release file

0.14.6

1 release file

0.14.5

1 release file

0.14.4

1 release file

0.14.3

1 release file

0.14.2

1 release file

0.14.1

1 release file

0.14.0

1 release file

0.13.0

1 release file

0.12.0

1 release file

0.11.3

1 release file

0.11.2

1 release file

0.11.1

1 release file

0.11.0

1 release file

0.10.1

1 release file

0.10.0

1 release file

0.9.0

1 release file

0.8.0

1 release file

0.7.4

1 release file

0.7.3

1 release file

0.7.2

1 release file

0.7.1

1 release file

0.7.0

1 release file

0.6.1

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.17

1 release file

0.4.16

1 release file

0.4.15

1 release file

0.4.14

1 release file

0.4.13

1 release file

0.4.12

1 release file

0.4.11

1 release file

0.4.10

1 release file

0.4.9

1 release file

0.4.8

1 release file

0.4.7

1 release file

0.4.6

1 release file

0.4.5

1 release file

0.4.4

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.2.1

1 release file

0.1.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page