CData Python Connector for Microsoft Power BI XMLA

Build 24.0.9060

Aggregate Functions

Certain aggregate functions can also be used within SQLAlchemy by using the func module.

To import this module, execute:

from sqlalchemy.sql import func

Once func is imported, the following aggregate functions are available:

COUNT

The following example counts the number of records in a set of groups using the session object's query() method.
rs = session.query(func.count([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer.Id).label("CustomCount"), [AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer.Country).group_by([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer.Country)
for instance in rs:
	print("Count: ", instance.CustomCount)
	print("Country: ", instance.Country)
	print("---------")

You can also execute COUNT using the session object's execute() method:

rs = session.execute([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.select().with_only_columns([func.count([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.c.Id).label("CustomCount"), [AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.c.Country])group_by([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.c.Country))
for instance in rs:

SUM

This example calculates the cumulative amount of a numeric column in a set of groups.

rs = session.query(func.sum([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer.AnnualRevenue).label("CustomSum"), [AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer.Country).group_by([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer.Country)
for instance in rs:
	print("Sum: ", instance.CustomSum)
	print("Country: ", instance.Country)
	print("---------")

You can also invoke SUM using the session object's execute() method.

rs = session.execute([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.select().with_only_columns([func.sum([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.c.AnnualRevenue).label("CustomSum"), [AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.c.Country]).group_by([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.c.Country))
for instance in rs:

AVG

This example uses the session object's query() method to calculate the average amount of a numeric column in a set of groups:
rs = session.query(func.avg([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer.AnnualRevenue).label("CustomAvg"), [AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer.Country).group_by([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer.Country)
for instance in rs:
	print("Avg: ", instance.CustomAvg)
	print("Country: ", instance.Country)
	print("---------")

You can also use the session object's execute() method to invoke AVG:

rs = session.execute([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.select().with_only_columns([func.avg([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.c.AnnualRevenue).label("CustomAvg"), [AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.c.Country]).group_by([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.c.Country))
for instance in rs:

MAX and MIN

This example finds the maximum value and minimum value of a numeric column in a set of groups.
rs = session.query(func.max([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer.AnnualRevenue).label("CustomMax"), func.min([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer.AnnualRevenue).label("CustomMin"), [AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer.Country).group_by([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer.Country)
for instance in rs:
	print("Max: ", instance.CustomMax)
	print("Min: ", instance.CustomMin)
	print("Country: ", instance.Country)
	print("---------")

You can also use the session object's execute() method to invoke MAX and MIN:

rs = session.execute([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.select().with_only_columns([func.max([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.c.AnnualRevenue).label("CustomMax"), func.min([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.c.AnnualRevenue).label("CustomMin"), [AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.c.Country]).group_by([AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer_table.c.Country))
for instance in rs:

Copyright (c) 2024 CData Software, Inc. - All rights reserved.
Build 24.0.9060