def execute(self, metadata, connection, filter_values): try: table = metadata.tables[self.table_name] except KeyError: raise TableNotFoundException("Unable to query table, table not found: %s" % self.table_name) asha_table = self.get_asha_table(metadata) max_date_query = sqlalchemy.select([ sqlalchemy.func.max(asha_table.c.date).label('date'), asha_table.c.case_id.label('case_id') ]) if self.filters: for filter in self.filters: max_date_query.append_whereclause(filter.build_expression(table)) max_date_query.append_group_by( asha_table.c.case_id ) max_date_subquery = sqlalchemy.alias(max_date_query, 'max_date') checklist_query = sqlalchemy.select() for column in self.columns: checklist_query.append_column(column.build_column(asha_table)) checklist_query = checklist_query.where( asha_table.c.case_id == max_date_subquery.c.case_id ).where( asha_table.c.date == max_date_subquery.c.date ) return connection.execute(checklist_query, **filter_values).fetchall()
def execute(self, metadata, connection, filter_values): try: table = metadata.tables[self.table_name] except KeyError: raise TableNotFoundException( "Unable to query table, table not found: %s" % self.table_name) return connection.execute(self._build_query(table, filter_values)).fetchall()