def get(self): """Request handler for GET operations.""" urlfetch.set_default_fetch_deadline(URLFETCH_TIMEOUT) config = explorer_config.ExplorerConfigModel.Get() client = DataHandlerUtil.GetDataClient(self.env) client.project_id = config.default_project query = product_labels.ProductLabelsQuery( data_client=client, dataset_name=config.default_dataset) filters = http_util.GetJsonParam(self.request, 'filters') start_date = None if 'start_date' in filters and filters['start_date']: start_date = filters['start_date'] end_date = None if 'end_date' in filters and filters['end_date']: end_date = filters['end_date'] response = query.Execute( start_date=start_date, end_date=end_date, product_name=filters['product_name'], test=filters['test'], metric=filters['metric']) self.RenderJson({'labels': response['labels']})
def testExecuteAllFilters(self): labels = product_labels.ProductLabelsQuery(data_client=self.data_client) labels.Execute( start_date={'filter_type': 'CUSTOM', 'filter_value': '2013-01-04', 'text': '2013-01-04'}, end_date={'filter_type': 'CUSTOM', 'filter_value': '2013-01-10', 'text': '2013-01-10'}, product_name='widget-factory', test='create-widgets', metric='final-weight') expected_sql = ( 'SELECT\n' '\tlabel,\n' '\tvalue,\n' '\tSUM(count) AS count\n' 'FROM samples_mart_testdata.metadata_cube\n' 'WHERE\n' '\tday_timestamp >= TIMESTAMP(\'2013-01-04 00:00:00.000000\') AND\n' '\tday_timestamp <= TIMESTAMP(\'2013-01-10 23:59:59.999999\') AND\n' '\tproduct_name = "widget-factory" AND\n' '\ttest = "create-widgets" AND\n' '\tmetric = "final-weight"\n' 'GROUP BY\n' '\tlabel,\n' '\tvalue\n' 'ORDER BY\n' '\tlabel,\n' '\tvalue\n' 'LIMIT 2000') self.assertEqual(labels.GetSql(), expected_sql)
def testExecuteNoFilters(self): labels = product_labels.ProductLabelsQuery(data_client=self.data_client) labels.Execute() expected_sql = ('SELECT\n' '\tlabel,\n' '\tvalue,\n' '\tSUM(count) AS count\n' 'FROM samples_mart_testdata.metadata_cube\n' 'GROUP BY\n' '\tlabel,\n' '\tvalue\n' 'ORDER BY\n' '\tlabel,\n' '\tvalue\n' 'LIMIT 2000') self.assertEqual(labels.GetSql(), expected_sql)
def testExecuteProductOnly(self): labels = product_labels.ProductLabelsQuery(data_client=self.data_client) labels.Execute(product_name='widget-factory') expected_sql = ('SELECT\n' '\tlabel,\n' '\tvalue,\n' '\tSUM(count) AS count\n' 'FROM samples_mart_testdata.metadata_cube\n' 'WHERE\n' '\tproduct_name = "widget-factory"\n' 'GROUP BY\n' '\tlabel,\n' '\tvalue\n' 'ORDER BY\n' '\tlabel,\n' '\tvalue\n' 'LIMIT 2000') self.assertEqual(labels.GetSql(), expected_sql)