Malloy Documentation
search

Malloy can compute moving averages on resultsets.

The queries below use the following model

document
source: order_items is duckdb.table('../data/order_items.parquet') extend {
  measure: 
    user_count is count(user_id)
    order_count is count()
}

Simple Moving Average

document
run: order_items -> {
  group_by: order_month is created_at.month
  aggregate: 
    order_count
  calculate: moving_avg_order_count is avg_moving(order_count, 3)
  order_by: order_month
}
QUERY RESULTS
order_​monthorder_​countmoving_​avg_​order_​count
2019-011,2621,262
2019-021,2301,246
2019-031,5071,333
2019-041,8261,456.25
2019-052,0441,651.75
2019-062,1501,881.75
2019-072,3822,100.5
2019-082,6322,302
2019-092,9022,516.5
2019-103,2142,782.5
2019-113,3873,033.75
2019-124,0383,385.25
2020-013,7433,595.5
2020-023,5703,684.5
2020-034,2633,903.5
2020-044,1833,939.75
2020-054,0194,008.75
2020-064,2924,189.25
2020-074,5494,260.75
2020-084,8744,433.5
2020-095,0324,686.75
2020-105,4224,969.25
2020-115,7825,277.5
2020-126,2935,632.25
2021-015,8975,848.5
2021-025,8215,948.25
2021-036,5476,139.5
2021-046,3806,161.25
2021-056,3786,281.5
2021-066,3056,402.5
2021-076,8136,469
2021-087,1426,659.5
2021-097,8867,036.5
2021-107,8147,413.75
2021-118,0637,726.25
2021-129,1038,216.5
2022-018,6098,397.25
2022-028,1748,487.25
2022-039,4418,831.75
2022-049,1008,831
2022-059,7309,111.25
2022-069,2979,392
2022-079,6689,448.75
2022-0810,4819,794
2022-0911,21310,164.75
2022-1011,39810,690
2022-115,1639,563.75
[
  {
    "order_month": "2019-01-01T00:00:00.000Z",
    "order_count": 1262,
    "moving_avg_order_count": 1262
  },
  {
    "order_month": "2019-02-01T00:00:00.000Z",
    "order_count": 1230,
    "moving_avg_order_count": 1246
  },
  {
    "order_month": "2019-03-01T00:00:00.000Z",
    "order_count": 1507,
    "moving_avg_order_count": 1333
  },
  {
    "order_month": "2019-04-01T00:00:00.000Z",
    "order_count": 1826,
    "moving_avg_order_count": 1456.25
  },
  {
    "order_month": "2019-05-01T00:00:00.000Z",
    "order_count": 2044,
    "moving_avg_order_count": 1651.75
  },
  {
    "order_month": "2019-06-01T00:00:00.000Z",
    "order_count": 2150,
    "moving_avg_order_count": 1881.75
  },
  {
    "order_month": "2019-07-01T00:00:00.000Z",
    "order_count": 2382,
    "moving_avg_order_count": 2100.5
  },
  {
    "order_month": "2019-08-01T00:00:00.000Z",
    "order_count": 2632,
    "moving_avg_order_count": 2302
  },
  {
    "order_month": "2019-09-01T00:00:00.000Z",
    "order_count": 2902,
    "moving_avg_order_count": 2516.5
  },
  {
    "order_month": "2019-10-01T00:00:00.000Z",
    "order_count": 3214,
    "moving_avg_order_count": 2782.5
  },
  {
    "order_month": "2019-11-01T00:00:00.000Z",
    "order_count": 3387,
    "moving_avg_order_count": 3033.75
  },
  {
    "order_month": "2019-12-01T00:00:00.000Z",
    "order_count": 4038,
    "moving_avg_order_count": 3385.25
  },
  {
    "order_month": "2020-01-01T00:00:00.000Z",
    "order_count": 3743,
    "moving_avg_order_count": 3595.5
  },
  {
    "order_month": "2020-02-01T00:00:00.000Z",
    "order_count": 3570,
    "moving_avg_order_count": 3684.5
  },
  {
    "order_month": "2020-03-01T00:00:00.000Z",
    "order_count": 4263,
    "moving_avg_order_count": 3903.5
  },
  {
    "order_month": "2020-04-01T00:00:00.000Z",
    "order_count": 4183,
    "moving_avg_order_count": 3939.75
  },
  {
    "order_month": "2020-05-01T00:00:00.000Z",
    "order_count": 4019,
    "moving_avg_order_count": 4008.75
  },
  {
    "order_month": "2020-06-01T00:00:00.000Z",
    "order_count": 4292,
    "moving_avg_order_count": 4189.25
  },
  {
    "order_month": "2020-07-01T00:00:00.000Z",
    "order_count": 4549,
    "moving_avg_order_count": 4260.75
  },
  {
    "order_month": "2020-08-01T00:00:00.000Z",
    "order_count": 4874,
    "moving_avg_order_count": 4433.5
  },
  {
    "order_month": "2020-09-01T00:00:00.000Z",
    "order_count": 5032,
    "moving_avg_order_count": 4686.75
  },
  {
    "order_month": "2020-10-01T00:00:00.000Z",
    "order_count": 5422,
    "moving_avg_order_count": 4969.25
  },
  {
    "order_month": "2020-11-01T00:00:00.000Z",
    "order_count": 5782,
    "moving_avg_order_count": 5277.5
  },
  {
    "order_month": "2020-12-01T00:00:00.000Z",
    "order_count": 6293,
    "moving_avg_order_count": 5632.25
  },
  {
    "order_month": "2021-01-01T00:00:00.000Z",
    "order_count": 5897,
    "moving_avg_order_count": 5848.5
  },
  {
    "order_month": "2021-02-01T00:00:00.000Z",
    "order_count": 5821,
    "moving_avg_order_count": 5948.25
  },
  {
    "order_month": "2021-03-01T00:00:00.000Z",
    "order_count": 6547,
    "moving_avg_order_count": 6139.5
  },
  {
    "order_month": "2021-04-01T00:00:00.000Z",
    "order_count": 6380,
    "moving_avg_order_count": 6161.25
  },
  {
    "order_month": "2021-05-01T00:00:00.000Z",
    "order_count": 6378,
    "moving_avg_order_count": 6281.5
  },
  {
    "order_month": "2021-06-01T00:00:00.000Z",
    "order_count": 6305,
    "moving_avg_order_count": 6402.5
  },
  {
    "order_month": "2021-07-01T00:00:00.000Z",
    "order_count": 6813,
    "moving_avg_order_count": 6469
  },
  {
    "order_month": "2021-08-01T00:00:00.000Z",
    "order_count": 7142,
    "moving_avg_order_count": 6659.5
  },
  {
    "order_month": "2021-09-01T00:00:00.000Z",
    "order_count": 7886,
    "moving_avg_order_count": 7036.5
  },
  {
    "order_month": "2021-10-01T00:00:00.000Z",
    "order_count": 7814,
    "moving_avg_order_count": 7413.75
  },
  {
    "order_month": "2021-11-01T00:00:00.000Z",
    "order_count": 8063,
    "moving_avg_order_count": 7726.25
  },
  {
    "order_month": "2021-12-01T00:00:00.000Z",
    "order_count": 9103,
    "moving_avg_order_count": 8216.5
  },
  {
    "order_month": "2022-01-01T00:00:00.000Z",
    "order_count": 8609,
    "moving_avg_order_count": 8397.25
  },
  {
    "order_month": "2022-02-01T00:00:00.000Z",
    "order_count": 8174,
    "moving_avg_order_count": 8487.25
  },
  {
    "order_month": "2022-03-01T00:00:00.000Z",
    "order_count": 9441,
    "moving_avg_order_count": 8831.75
  },
  {
    "order_month": "2022-04-01T00:00:00.000Z",
    "order_count": 9100,
    "moving_avg_order_count": 8831
  },
  {
    "order_month": "2022-05-01T00:00:00.000Z",
    "order_count": 9730,
    "moving_avg_order_count": 9111.25
  },
  {
    "order_month": "2022-06-01T00:00:00.000Z",
    "order_count": 9297,
    "moving_avg_order_count": 9392
  },
  {
    "order_month": "2022-07-01T00:00:00.000Z",
    "order_count": 9668,
    "moving_avg_order_count": 9448.75
  },
  {
    "order_month": "2022-08-01T00:00:00.000Z",
    "order_count": 10481,
    "moving_avg_order_count": 9794
  },
  {
    "order_month": "2022-09-01T00:00:00.000Z",
    "order_count": 11213,
    "moving_avg_order_count": 10164.75
  },
  {
    "order_month": "2022-10-01T00:00:00.000Z",
    "order_count": 11398,
    "moving_avg_order_count": 10690
  },
  {
    "order_month": "2022-11-01T00:00:00.000Z",
    "order_count": 5163,
    "moving_avg_order_count": 9563.75
  }
]
SELECT 
   DATE_TRUNC('month', order_items."created_at") as "order_month",
   COUNT( 1) as "order_count",
   AVG((COUNT( 1))) OVER(  ORDER BY  DATE_TRUNC('month', order_items."created_at") ASC NULLS LAST ROWS BETWEEN 3 PRECEDING AND 0 FOLLOWING) as "moving_avg_order_count"
FROM '../data/order_items.parquet' as order_items
GROUP BY 1
ORDER BY 1 ASC NULLS LAST

Visualizing the Results

document
run: order_items -> {
  # line_chart
  nest: non_averaged is  {
    group_by: order_month is created_at.month
    aggregate: 
      order_count
    order_by: order_month
  }

  # line_chart
  nest: moving_averaged is  {
    group_by: order_month is created_at.month
    calculate: moving_avg_order_count is avg_moving(order_count, 3)
    order_by: order_month
  }
}
QUERY RESULTS
non_​averagedmoving_​averaged
2019202020212022order_month2,0004,0006,0008,00010,00012,000order_count
2019202020212022order_month2,0004,0006,0008,00010,000moving_avg_order_count
[
  {
    "non_averaged": [
      {
        "order_month": "2019-01-01T00:00:00.000Z",
        "order_count": 1262
      },
      {
        "order_month": "2019-02-01T00:00:00.000Z",
        "order_count": 1230
      },
      {
        "order_month": "2019-03-01T00:00:00.000Z",
        "order_count": 1507
      },
      {
        "order_month": "2019-04-01T00:00:00.000Z",
        "order_count": 1826
      },
      {
        "order_month": "2019-05-01T00:00:00.000Z",
        "order_count": 2044
      },
      {
        "order_month": "2019-06-01T00:00:00.000Z",
        "order_count": 2150
      },
      {
        "order_month": "2019-07-01T00:00:00.000Z",
        "order_count": 2382
      },
      {
        "order_month": "2019-08-01T00:00:00.000Z",
        "order_count": 2632
      },
      {
        "order_month": "2019-09-01T00:00:00.000Z",
        "order_count": 2902
      },
      {
        "order_month": "2019-10-01T00:00:00.000Z",
        "order_count": 3214
      },
      {
        "order_month": "2019-11-01T00:00:00.000Z",
        "order_count": 3387
      },
      {
        "order_month": "2019-12-01T00:00:00.000Z",
        "order_count": 4038
      },
      {
        "order_month": "2020-01-01T00:00:00.000Z",
        "order_count": 3743
      },
      {
        "order_month": "2020-02-01T00:00:00.000Z",
        "order_count": 3570
      },
      {
        "order_month": "2020-03-01T00:00:00.000Z",
        "order_count": 4263
      },
      {
        "order_month": "2020-04-01T00:00:00.000Z",
        "order_count": 4183
      },
      {
        "order_month": "2020-05-01T00:00:00.000Z",
        "order_count": 4019
      },
      {
        "order_month": "2020-06-01T00:00:00.000Z",
        "order_count": 4292
      },
      {
        "order_month": "2020-07-01T00:00:00.000Z",
        "order_count": 4549
      },
      {
        "order_month": "2020-08-01T00:00:00.000Z",
        "order_count": 4874
      },
      {
        "order_month": "2020-09-01T00:00:00.000Z",
        "order_count": 5032
      },
      {
        "order_month": "2020-10-01T00:00:00.000Z",
        "order_count": 5422
      },
      {
        "order_month": "2020-11-01T00:00:00.000Z",
        "order_count": 5782
      },
      {
        "order_month": "2020-12-01T00:00:00.000Z",
        "order_count": 6293
      },
      {
        "order_month": "2021-01-01T00:00:00.000Z",
        "order_count": 5897
      },
      {
        "order_month": "2021-02-01T00:00:00.000Z",
        "order_count": 5821
      },
      {
        "order_month": "2021-03-01T00:00:00.000Z",
        "order_count": 6547
      },
      {
        "order_month": "2021-04-01T00:00:00.000Z",
        "order_count": 6380
      },
      {
        "order_month": "2021-05-01T00:00:00.000Z",
        "order_count": 6378
      },
      {
        "order_month": "2021-06-01T00:00:00.000Z",
        "order_count": 6305
      },
      {
        "order_month": "2021-07-01T00:00:00.000Z",
        "order_count": 6813
      },
      {
        "order_month": "2021-08-01T00:00:00.000Z",
        "order_count": 7142
      },
      {
        "order_month": "2021-09-01T00:00:00.000Z",
        "order_count": 7886
      },
      {
        "order_month": "2021-10-01T00:00:00.000Z",
        "order_count": 7814
      },
      {
        "order_month": "2021-11-01T00:00:00.000Z",
        "order_count": 8063
      },
      {
        "order_month": "2021-12-01T00:00:00.000Z",
        "order_count": 9103
      },
      {
        "order_month": "2022-01-01T00:00:00.000Z",
        "order_count": 8609
      },
      {
        "order_month": "2022-02-01T00:00:00.000Z",
        "order_count": 8174
      },
      {
        "order_month": "2022-03-01T00:00:00.000Z",
        "order_count": 9441
      },
      {
        "order_month": "2022-04-01T00:00:00.000Z",
        "order_count": 9100
      },
      {
        "order_month": "2022-05-01T00:00:00.000Z",
        "order_count": 9730
      },
      {
        "order_month": "2022-06-01T00:00:00.000Z",
        "order_count": 9297
      },
      {
        "order_month": "2022-07-01T00:00:00.000Z",
        "order_count": 9668
      },
      {
        "order_month": "2022-08-01T00:00:00.000Z",
        "order_count": 10481
      },
      {
        "order_month": "2022-09-01T00:00:00.000Z",
        "order_count": 11213
      },
      {
        "order_month": "2022-10-01T00:00:00.000Z",
        "order_count": 11398
      },
      {
        "order_month": "2022-11-01T00:00:00.000Z",
        "order_count": 5163
      }
    ],
    "moving_averaged": [
      {
        "order_month": "2019-01-01T00:00:00.000Z",
        "moving_avg_order_count": 1262
      },
      {
        "order_month": "2019-02-01T00:00:00.000Z",
        "moving_avg_order_count": 1246
      },
      {
        "order_month": "2019-03-01T00:00:00.000Z",
        "moving_avg_order_count": 1333
      },
      {
        "order_month": "2019-04-01T00:00:00.000Z",
        "moving_avg_order_count": 1456.25
      },
      {
        "order_month": "2019-05-01T00:00:00.000Z",
        "moving_avg_order_count": 1651.75
      },
      {
        "order_month": "2019-06-01T00:00:00.000Z",
        "moving_avg_order_count": 1881.75
      },
      {
        "order_month": "2019-07-01T00:00:00.000Z",
        "moving_avg_order_count": 2100.5
      },
      {
        "order_month": "2019-08-01T00:00:00.000Z",
        "moving_avg_order_count": 2302
      },
      {
        "order_month": "2019-09-01T00:00:00.000Z",
        "moving_avg_order_count": 2516.5
      },
      {
        "order_month": "2019-10-01T00:00:00.000Z",
        "moving_avg_order_count": 2782.5
      },
      {
        "order_month": "2019-11-01T00:00:00.000Z",
        "moving_avg_order_count": 3033.75
      },
      {
        "order_month": "2019-12-01T00:00:00.000Z",
        "moving_avg_order_count": 3385.25
      },
      {
        "order_month": "2020-01-01T00:00:00.000Z",
        "moving_avg_order_count": 3595.5
      },
      {
        "order_month": "2020-02-01T00:00:00.000Z",
        "moving_avg_order_count": 3684.5
      },
      {
        "order_month": "2020-03-01T00:00:00.000Z",
        "moving_avg_order_count": 3903.5
      },
      {
        "order_month": "2020-04-01T00:00:00.000Z",
        "moving_avg_order_count": 3939.75
      },
      {
        "order_month": "2020-05-01T00:00:00.000Z",
        "moving_avg_order_count": 4008.75
      },
      {
        "order_month": "2020-06-01T00:00:00.000Z",
        "moving_avg_order_count": 4189.25
      },
      {
        "order_month": "2020-07-01T00:00:00.000Z",
        "moving_avg_order_count": 4260.75
      },
      {
        "order_month": "2020-08-01T00:00:00.000Z",
        "moving_avg_order_count": 4433.5
      },
      {
        "order_month": "2020-09-01T00:00:00.000Z",
        "moving_avg_order_count": 4686.75
      },
      {
        "order_month": "2020-10-01T00:00:00.000Z",
        "moving_avg_order_count": 4969.25
      },
      {
        "order_month": "2020-11-01T00:00:00.000Z",
        "moving_avg_order_count": 5277.5
      },
      {
        "order_month": "2020-12-01T00:00:00.000Z",
        "moving_avg_order_count": 5632.25
      },
      {
        "order_month": "2021-01-01T00:00:00.000Z",
        "moving_avg_order_count": 5848.5
      },
      {
        "order_month": "2021-02-01T00:00:00.000Z",
        "moving_avg_order_count": 5948.25
      },
      {
        "order_month": "2021-03-01T00:00:00.000Z",
        "moving_avg_order_count": 6139.5
      },
      {
        "order_month": "2021-04-01T00:00:00.000Z",
        "moving_avg_order_count": 6161.25
      },
      {
        "order_month": "2021-05-01T00:00:00.000Z",
        "moving_avg_order_count": 6281.5
      },
      {
        "order_month": "2021-06-01T00:00:00.000Z",
        "moving_avg_order_count": 6402.5
      },
      {
        "order_month": "2021-07-01T00:00:00.000Z",
        "moving_avg_order_count": 6469
      },
      {
        "order_month": "2021-08-01T00:00:00.000Z",
        "moving_avg_order_count": 6659.5
      },
      {
        "order_month": "2021-09-01T00:00:00.000Z",
        "moving_avg_order_count": 7036.5
      },
      {
        "order_month": "2021-10-01T00:00:00.000Z",
        "moving_avg_order_count": 7413.75
      },
      {
        "order_month": "2021-11-01T00:00:00.000Z",
        "moving_avg_order_count": 7726.25
      },
      {
        "order_month": "2021-12-01T00:00:00.000Z",
        "moving_avg_order_count": 8216.5
      },
      {
        "order_month": "2022-01-01T00:00:00.000Z",
        "moving_avg_order_count": 8397.25
      },
      {
        "order_month": "2022-02-01T00:00:00.000Z",
        "moving_avg_order_count": 8487.25
      },
      {
        "order_month": "2022-03-01T00:00:00.000Z",
        "moving_avg_order_count": 8831.75
      },
      {
        "order_month": "2022-04-01T00:00:00.000Z",
        "moving_avg_order_count": 8831
      },
      {
        "order_month": "2022-05-01T00:00:00.000Z",
        "moving_avg_order_count": 9111.25
      },
      {
        "order_month": "2022-06-01T00:00:00.000Z",
        "moving_avg_order_count": 9392
      },
      {
        "order_month": "2022-07-01T00:00:00.000Z",
        "moving_avg_order_count": 9448.75
      },
      {
        "order_month": "2022-08-01T00:00:00.000Z",
        "moving_avg_order_count": 9794
      },
      {
        "order_month": "2022-09-01T00:00:00.000Z",
        "moving_avg_order_count": 10164.75
      },
      {
        "order_month": "2022-10-01T00:00:00.000Z",
        "moving_avg_order_count": 10690
      },
      {
        "order_month": "2022-11-01T00:00:00.000Z",
        "moving_avg_order_count": 9563.75
      }
    ]
  }
]
WITH __stage0 AS (
  SELECT
    group_set,
    CASE WHEN group_set=1 THEN
      DATE_TRUNC('month', order_items."created_at")
      END as "order_month__1",
    CASE WHEN group_set=1 THEN
      COUNT( 1)
      END as "order_count__1",
    CASE WHEN group_set=2 THEN
      DATE_TRUNC('month', order_items."created_at")
      END as "order_month__2",
    AVG((CASE WHEN group_set=2 THEN
      COUNT( 1)
      END)) OVER(PARTITION BY group_set  ORDER BY  CASE WHEN group_set=2 THEN
      DATE_TRUNC('month', order_items."created_at")
      END ASC NULLS LAST ROWS BETWEEN 3 PRECEDING AND 0 FOLLOWING) as "moving_avg_order_count__2"
  FROM '../data/order_items.parquet' as order_items
  CROSS JOIN (SELECT UNNEST(GENERATE_SERIES(0,2,1)) as group_set  ) as group_set
  GROUP BY 1,2,4
)
SELECT
  COALESCE(LIST({
    "order_month": "order_month__1", 
    "order_count": "order_count__1"}  ORDER BY  "order_month__1" ASC NULLS LAST) FILTER (WHERE group_set=1),[]) as "non_averaged",
  COALESCE(LIST({
    "order_month": "order_month__2", 
    "moving_avg_order_count": "moving_avg_order_count__2"}  ORDER BY  "order_month__2" ASC NULLS LAST) FILTER (WHERE group_set=2),[]) as "moving_averaged"
FROM __stage0

Displaying Charts in Nested Queries

In this example, we've added two queries to the flights source, one showing flights by month without the moving average applied, and one with the moving average applied. We then use these queries to show charts of flight count for each airport over time.

document
source: flights is duckdb.table('../data/flights.parquet') extend {
  measure: flight_count is count()
  dimension: dep_month is dep_time.month

  # line_chart
  view: non_averaged is {
    group_by: dep_month
    aggregate: 
      flight_count
    order_by: dep_month
  }

  # line_chart
  view: moving_averaged is {
    group_by: dep_month
    calculate: moving_avg_flight_count is avg_moving(flight_count, 3)
    order_by: dep_month
  }
}
document
run: flights -> {
  group_by: destination
  aggregate: flight_count
  nest: non_averaged
  nest: moving_averaged
}
QUERY RESULTS
destinationflight_​countnon_​averagedmoving_​averaged
ATL17,832
200020012002200320042005dep_month50100150200250300350400flight_count
200020012002200320042005dep_month100150200250300350moving_avg_flight_count
DFW17,776
200020012002200320042005dep_month150200250300350400flight_count
200020012002200320042005dep_month150200250300moving_avg_flight_count
ORD14,213
200020012002200320042005dep_month100150200250300flight_count
200020012002200320042005dep_month140160180200220240260moving_avg_flight_count
PHX12,477
200020012002200320042005dep_month120140160180200220flight_count
200020012002200320042005dep_month150160170180190200moving_avg_flight_count
LAS11,092
200020012002200320042005dep_month100150200flight_count
200020012002200320042005dep_month120140160180200moving_avg_flight_count
LAX11,074
200020012002200320042005dep_month100120140160180200220flight_count
200020012002200320042005dep_month120130140150160170180190moving_avg_flight_count
MSP9,769
200020012002200320042005dep_month80100120140160180200flight_count
200020012002200320042005dep_month100120140160180moving_avg_flight_count
DTW8,141
200020012002200320042005dep_month6080100120140flight_count
200020012002200320042005dep_month8090100110120130moving_avg_flight_count
PHL7,694
200020012002200320042005dep_month50100150200flight_count
200020012002200320042005dep_month6080100120140160180moving_avg_flight_count
LGA7,625
200020012002200320042005dep_month50100150200flight_count
200020012002200320042005dep_month50100150200moving_avg_flight_count
BWI7,190
200020012002200320042005dep_month6080100120140flight_count
200020012002200320042005dep_month708090100110120130moving_avg_flight_count
DEN7,187
200020012002200320042005dep_month6080100120140160flight_count
200020012002200320042005dep_month6080100120140moving_avg_flight_count
CLT7,113
200020012002200320042005dep_month406080100120140160flight_count
200020012002200320042005dep_month6080100120140moving_avg_flight_count
SEA7,000
200020012002200320042005dep_month406080100120flight_count
200020012002200320042005dep_month60708090100110120moving_avg_flight_count
MCO6,796
200020012002200320042005dep_month6080100120140flight_count
200020012002200320042005dep_month60708090100110120130moving_avg_flight_count
DCA6,695
200020012002200320042005dep_month050100150200flight_count
200020012002200320042005dep_month50100150200moving_avg_flight_count
IAH6,623
200020012002200320042005dep_month50100150200flight_count
200020012002200320042005dep_month50100150200moving_avg_flight_count
MDW6,614
200020012002200320042005dep_month50100150200flight_count
200020012002200320042005dep_month50100150200moving_avg_flight_count
BOS5,799
200020012002200320042005dep_month406080100120140flight_count
200020012002200320042005dep_month406080100120moving_avg_flight_count
EWR5,137
200020012002200320042005dep_month20406080100120140160flight_count
200020012002200320042005dep_month406080100120moving_avg_flight_count
CLE5,125
200020012002200320042005dep_month050100150flight_count
200020012002200320042005dep_month20406080100120140160moving_avg_flight_count
OAK5,082
200020012002200320042005dep_month405060708090100flight_count
200020012002200320042005dep_month5060708090moving_avg_flight_count
SAN5,080
200020012002200320042005dep_month5060708090100flight_count
200020012002200320042005dep_month556065707580moving_avg_flight_count
TPA4,881
200020012002200320042005dep_month405060708090flight_count
200020012002200320042005dep_month5060708090moving_avg_flight_count
PIT4,507
200020012002200320042005dep_month20406080100120flight_count
200020012002200320042005dep_month20304050607080moving_avg_flight_count
SFO4,502
200020012002200320042005dep_month405060708090flight_count
200020012002200320042005dep_month405060708090moving_avg_flight_count
BNA4,279
200020012002200320042005dep_month4050607080flight_count
200020012002200320042005dep_month5055606570moving_avg_flight_count
STL4,098
200020012002200320042005dep_month405060708090flight_count
200020012002200320042005dep_month4050607080moving_avg_flight_count
MCI4,081
200020012002200320042005dep_month4050607080flight_count
200020012002200320042005dep_month5055606570moving_avg_flight_count
IAD3,932
200020012002200320042005dep_month405060708090flight_count
200020012002200320042005dep_month4050607080moving_avg_flight_count
SJC3,818
200020012002200320042005dep_month304050607080flight_count
200020012002200320042005dep_month4045505560moving_avg_flight_count
JFK3,698
200020012002200320042005dep_month20406080100flight_count
200020012002200320042005dep_month20406080moving_avg_flight_count
FLL3,608
200020012002200320042005dep_month304050607080flight_count
200020012002200320042005dep_month3540455055606570moving_avg_flight_count
PDX3,602
200020012002200320042005dep_month304050607080flight_count
200020012002200320042005dep_month404550556065moving_avg_flight_count
SMF3,580
200020012002200320042005dep_month3040506070flight_count
200020012002200320042005dep_month404550556065moving_avg_flight_count
HOU3,428
200020012002200320042005dep_month3040506070flight_count
200020012002200320042005dep_month4045505560moving_avg_flight_count
CVG3,292
200020012002200320042005dep_month020406080100120140flight_count
200020012002200320042005dep_month020406080100120moving_avg_flight_count
MSY3,265
200020012002200320042005dep_month10203040506070flight_count
200020012002200320042005dep_month10203040506070moving_avg_flight_count
ABQ2,762
200020012002200320042005dep_month2030405060flight_count
200020012002200320042005dep_month2530354045505560moving_avg_flight_count
SLC2,745
200020012002200320042005dep_month2030405060flight_count
200020012002200320042005dep_month2530354045505560moving_avg_flight_count
ONT2,645
200020012002200320042005dep_month2030405060flight_count
200020012002200320042005dep_month3035404550moving_avg_flight_count
RDU2,457
200020012002200320042005dep_month2030405060flight_count
200020012002200320042005dep_month2025303540455055moving_avg_flight_count
MIA2,369
200020012002200320042005dep_month102030405060flight_count
200020012002200320042005dep_month1020304050moving_avg_flight_count
PVD2,364
200020012002200320042005dep_month1020304050flight_count
200020012002200320042005dep_month2025303540moving_avg_flight_count
MEM2,250
200020012002200320042005dep_month20304050flight_count
200020012002200320042005dep_month25303540moving_avg_flight_count
IND2,229
200020012002200320042005dep_month102030405060flight_count
200020012002200320042005dep_month1020304050moving_avg_flight_count
BDL2,162
200020012002200320042005