예제 #1
0
  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']})
예제 #2
0
  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)
예제 #3
0
  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)
예제 #4
0
  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)