Session Description

This session will give a brief intro to Aeries APIs, including how to integrate the API responses in Power BI, manipulating the datasets, establishing relationships between data tables, the significance of the dynamic report that changes as filters are applied, and creating the visuals.

Session Content

Get Data

  • From Web (API) - offers live connections to the database allowing for automated data refresh
    • Basic: Allows the user to request data table from a URL
    • Advanced: Allows user to add headers to the web request
  • From Files (JSON, Text/CSV) - offers easier access to larger amounts of data at the expense of real-time access to it
    • Useful when multiple API requests need to be sent to obtain all information for the district
      • Example is having to send a request for each school code in the following endpoint:{SchoolCode}/students
    • Watch session 1008 (Posh-AeriesApi) to learn how to write a JSON file from multiple API responses


  • Power Query Editor
    • Transform data
    • Change data types
    • Filtering columns
    • Handle duplicates and null values
    • Custom columns
  • Report View
    • Build your interactive dashboards
    • Visuals
    • Slicers
  • Data View
    • View data tables
    • Create new measures
    • Change formatting and properties
    • Data groups
  • Relationship View
    • Build data schema
    • Establish / edit relationships

Code Examples

Python example for pulling attendance data for a list of schools:

import asyncio
import aiohttp
import os
import json

# Setting up variables
# Create environment variable named AERIES-CERT, save your API key there
# Change url variable to your instance of Aeries and desired endpoint
# Change school codes to reflect your school district school codes
api_key = os.environ.get('AERIES-CERT')
url = '{}/Attendance'
school_codes = [0, 884, 894, 900, 901, 902, 903, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999]
headers = {
        "Accept": "application/json",
        "AERIES-CERT": api_key 

results = []

async def get_data():
    async with aiohttp.ClientSession() as session:
        tasks = [session.get(url.format(school), headers=headers, ssl=False) for school in school_codes]
        responses = await asyncio.gather(*tasks)
        for response in responses:
             results.append(await response.json())
        return results

# You may change the variable name as necessary to reflect the data retrieved
# Be sure to also change in line 37 json.dump()
# Run next line if getting RuntimeError: Event loop is closed
attendance =

# Writes to a JSON file in the same directory
# You may change the name of the file as necessary to reflect the data retrieved
with open('attendance2.json', 'w') as f:
    json.dump(attendance, f)


Related Documentation