Python SDK for Composable and Reusable Analytics


Python is one among as we speak’s hottest programming languages, largely on account of its simplicity and flexibility. Based on UC Berkeley Extension, it was the second-most in-demand programming language of 2021, and plenty of firms that work with back-end growth, app growth, and knowledge have a tendency to make use of Python as their language of selection.

One more reason for its reputation amongst builders is the variety of modules and frameworks offered by the Python neighborhood. It’s value mentioning that many of those modules and frameworks are open-source, thus bettering their high quality, safety, and transparency.

Under, we’ll look at a set of Python modules from GoodData.

What Is GoodData’s Python SDK?

GoodData’s Python SDK is a set of python modules for interplay with GoodData.CN, our cloud-native analytics platform. These modules are the whole lot you’ll anticipate — straightforward to make use of and open-source. Mixed with different Python modules, the SDK creates a stable basis for knowledge evaluation, knowledge science, and knowledge visualization.

GoodData’s Python SDK accommodates these modules:

  • gooddata_sdk

    • the primary entry level for communication with GoodData.CN
  • gooddata_fdw

    • SQL gateway to GoodData, which makes use of the expertise of Postgres Overseas Information Wrapper
  • gooddata_pandas

    • permits working with knowledge utilizing Pandas knowledge frames

How Highly effective Is GoodData’s Python SDK?

GoodData’s Python SDK is a wonderful interface for controlling GoodData.CN — and issues actually begin to get thrilling while you mix a number of modules. So, let’s check out a number of use instances.

Analytics As Code

Within the occasion the place you’re constructing a knowledge pipeline utilizing Python, you possibly can seamlessly prolong your pipeline code with the automated technology of the analytics layer. This analytics layer not solely can increase your effectiveness with consistency and reusability, however it can also present managed knowledge entry throughout a number of departments, insights, and dashboards.

You possibly can management your analytics layer with the gooddata_sdk module. Afterward, you possibly can entry knowledge with the gooddata_fdw and gooddata_pandas modules, or you possibly can deal with your entire analytics layer utilizing GoodData.CN’s UI.

Consuming Analytics by way of Pandas

When somebody desires to hold out knowledge evaluation and knowledge science utilizing Python, they may come throughout well-known Python modules akin to Pandas, PySpark, Matplotlib, NumPy, SciPy, scikit-learn, PyTorch, TensorFlow, and extra. And as Python programmers working with knowledge, we often come throughout knowledge constructions akin to knowledge frames, arrays, tensors, and many others. These knowledge constructions are usually straightforward to transform, creating a superb ecosystem for working with knowledge.

On this use case, we want to spotlight the gooddata_pandas module, which permits customers to entry their knowledge utilizing the Pandas knowledge body. When you’ve got labored with knowledge frames beforehand, you understand that filtering, aggregation, and choice are all essential points.

Say, for instance, you’ve a database with a number of tables, and your objective is to get a knowledge body consisting of columns from varied joined tables. Together with your knowledge related to GoodData.CN, gooddata_pandas makes this process far more manageable. You possibly can reuse your metrics from GoodData.CN, use them to entry your knowledge, and immediately get your required knowledge body. This method makes working with knowledge extra environment friendly and allows you to reuse metrics.

def good_pandas():
gp = GoodPandas(host=HOST, token=TOKEN)
frames = gp.data_frames(WORKSPACE_ID)
df = frames.not_indexed(columns=dict(
return df
def pure_pandas():
engine = create_engine(f'postgresql+psycopg2://{USERNAME}:{PASSWORD}@localhost/demo')
question = 'choose * from demo.demo.campaigns c be a part of demo.demo.order_lines ol on ol.campaign_id = c.campaign_id;'
df = pd.read_sql_query(question, con=engine)
grouped_df = df.groupby(["campaign_name"]).sum()
price_sum = grouped_df[["price"]]
filtered_df = df.loc[df.order_status == "Delivered"].copy()
filtered_df["order_amount"] = filtered_df["price"] * filtered_df["quantity"]
filtered_df_grouped = filtered_df.groupby(['campaign_name']).sum()
filtered_df_grouped = filtered_df_grouped[["order_amount"]]
wanted_df = a part of(filtered_df_grouped, on='campaign_name', how='left')
wanted_df.reset_index(stage=0, inplace=True)
wanted_df = wanted_df.rename(columns={"worth": "price_sum", "order_amount": "income"})
return wanted_df

Each capabilities above get the identical knowledge body. As you possibly can see, the method utilizing the good_pandas module is extra easy. It makes use of metric income, which may be outlined both utilizing gooddata_sdk or GoodData.CN, and it is a trivial MAQL question, as you possibly can see beneath.

SELECT SUM({truth/order_lines.worth} * {truth/order_lines.amount})
WHERE {label/order_lines.order_status} = "Delivered"

The metric income can be utilized in retrieving different knowledge frames, and the aggregation goes to adapt, which is terrific. So, as you possibly can see, through the use of gooddata_pandas, you possibly can dramatically increase the efficiency and effectivity of your work.

Consuming Analytics Outcomes From Your Software by way of PostgreSQL

Suppose you like to entry your knowledge from different (non-Python) environments. As such, you possibly can expose your knowledge utilizing gooddata_fdw as PostgreSQL. Exposing your knowledge on this approach ends in a number of choices by which to course of them afterward. For instance, if you happen to favor to make use of it for knowledge evaluation, knowledge science, and visualization in different programming languages (R, Julia), you possibly can connect with uncovered PostgreSQL and work with knowledge within the consolation of your fashionable programming language. Alternatively, you possibly can entry your knowledge from any kind of expertise that helps PostgreSQL.

choose c.campaigns_campaign_name, c.order_lines_price , c.income 
from "475076b1fbe64674aebeeb18e26de53f".compute c
choose c.campaign_name, a.worth, b.income
from (choose ol.campaign_id, SUM(ol.worth) as worth
from demo.demo.order_lines ol
group by ol.campaign_id) as a
inside be a part of (choose ol.campaign_id, sum(ol.worth * ol.amount) as income
from demo.demo.order_lines ol
the place ol.order_status = 'Delivered'
group by ol.campaign_id) as b on a.campaign_id = b.campaign_id
inside be a part of demo.demo.campaigns c on c.campaign_id = a.campaign_id
order by c.campaign_name;

The figures above are examples of getting knowledge utilizing gooddata_fdw vs. utilizing pure SQL over the database. As you possibly can see, utilizing gooddata_fdw is far more easy and doesn’t require any JOINs.

Abstract: Headless BI Consumption

Every of the earlier analytics consumption use instances may be summarized as a Python headless BI layer. Headless BI is an idea the place the semantic mannequin is handled as a shared service. It is an method that has a number of advantages, akin to establishing a “single supply of reality” — in different phrases, it permits knowledge shoppers to work with the identical attributes, information, and metrics, and thus producing constant outputs. One other profit is a “do not repeat your self” precept the place advanced aggregations, information, and metrics are outlined solely as soon as and obtainable to all knowledge shoppers.

Headless BI provides consistent results across multiple tools and platforms.

Headless BI offers constant outcomes throughout a number of instruments and platforms.

Without the headless BI approach, different analytics tools and platforms yield different outputs.

With out the headless BI method, completely different analytics instruments and platforms yield completely different outputs.

Arms-On Expertise

GoodData’s Python SDK means that you can take pleasure in composable knowledge and reusable analytics in your Python script. It’s open-source, that means you can simply see what’s taking place, and, on the identical time, you’re welcome to contribute. The aforementioned use instances spotlight the facility of GoodData’s Python SDK, and so they’re only a fraction of what you are able to do.

Do you discover these Python modules and particular use instances fascinating? Attempt them out, and be at liberty to share your expertise with GoodData.


Please enter your comment!
Please enter your name here

Share post:




More like this