def test_max_without_collapse_same_as_avg(self):
        self.query.add_series(self.single_series, self.rep_mode, self.series_periodicity)
        data = self.query.run()

        other_query = ESQuery(settings.TEST_INDEX)
        other_query.add_series(self.single_series, self.rep_mode, self.series_periodicity, collapse_agg='max')
        other_data = other_query.run()

        for i, row in enumerate(data):
            self.assertEqual(tuple(row), tuple(other_data[i]))
    def test_query_add_aggregation(self):
        avg_query = ESQuery(index=settings.TEST_INDEX)
        avg_query.add_series(self.single_series, self.rep_mode, self.series_periodicity, 'avg')
        data = avg_query.run()

        self.query.add_series(self.single_series, self.rep_mode, self.series_periodicity, 'sum')

        for i, row in enumerate(data):
            avg_value = data[i][1]
            sum_value = row[1]
            # En query común el parámetro collapse_agg NO TIENE EFECTO
            self.assertEqual(avg_value, sum_value)
    def test_add_query_aggregation(self):
        avg_query = ESQuery(index=settings.TEST_INDEX)
        avg_query.add_series(self.single_series, self.rep_mode, self.series_periodicity, 'avg')
        data = avg_query.run()

        self.query.add_series(self.single_series, self.rep_mode, self.series_periodicity, 'sum')
        sum_data = self.query.run()

        for i, row in enumerate(sum_data):
            # Suma debe ser siempre mayor que el promedio
            sum_value = row[1]
            avg_value = data[i][1]
            self.assertGreater(sum_value, avg_value)
    def test_preserve_query_order(self):

        self.query.add_series(self.single_series, self.rep_mode, self.series_periodicity)
        self.query.add_series(self.delayed_series,
                              self.rep_mode,
                              self.series_periodicity)

        query = ESQuery(index=settings.TEST_INDEX)
        query.add_series(self.single_series, self.rep_mode, self.series_periodicity)
        query.sort('asc')
        first_date = query.run()[0][0]
        self.query.sort('asc')
        data = self.query.run()
        self.assertEqual(data[0][0], first_date)
    def test_min_max_collapse_agg_with_rep_mode(self):
        self.query.add_series(self.single_series, 'percent_change', self.series_periodicity)
        self.query.add_pagination(start=1, limit=12)
        data = self.query.run()

        other_query = ESQuery(settings.TEST_INDEX)
        other_query.add_series(self.single_series, 'percent_change', self.series_periodicity, collapse_agg='max')
        other_query.add_pagination(start=0, limit=1)
        other_query.add_collapse('year')

        other_data = other_query.run()

        min_val = max([row[1] for row in data])

        self.assertAlmostEqual(min_val, other_data[0][1], places=5)
Exemplo n.º 6
0
    def test_end_of_period_with_rep_mode(self):
        self.query.add_series(self.single_series, 'percent_change',
                              self.series_periodicity, 'end_of_period')
        self.query.add_collapse('year')
        self.query.sort('asc')
        data = self.query.run()

        orig_eop = ESQuery(index=settings.TEST_INDEX)
        orig_eop.add_series(self.single_series, self.rep_mode,
                            self.series_periodicity, 'end_of_period')
        orig_eop.add_collapse('year')
        orig_eop.sort('asc')
        end_of_period = orig_eop.run()

        for i, row in enumerate(data):  # El primero es nulo en pct change
            value = end_of_period[i + 1][1] / end_of_period[i][1] - 1

            self.assertAlmostEqual(value, row[1])
    def test_same_series_rep_mode(self):
        self.query.add_series(self.single_series, self.rep_mode, self.series_periodicity)
        self.query.add_series(self.single_series, 'percent_change_a_year_ago', self.series_periodicity)

        data = self.query.run()

        other_query = ESQuery(settings.TEST_INDEX)
        other_query.add_series(self.single_series, 'percent_change_a_year_ago', self.series_periodicity)
        other_query.add_series(self.single_series, self.rep_mode, self.series_periodicity)

        other_data = other_query.run()

        # Esperado: mismos resultados, invertidos en orden de fila
        for i, row in enumerate(data):
            other_row = other_data[i]
            self.assertEqual(row[0], other_row[0])
            self.assertEqual(row[1], other_row[2])
            self.assertEqual(row[2], other_row[1])
    def test_index_continuity(self):
        self.query.add_series(self.delayed_series,
                              self.rep_mode,
                              self.series_periodicity)
        self.query.add_series(self.single_series, self.rep_mode, self.series_periodicity)
        self.query.add_filter(start="1910", end="1920")
        self.query.sort('asc')

        query = ESQuery(index=settings.TEST_INDEX)
        query.add_series(self.single_series, self.rep_mode, self.series_periodicity)
        query.add_filter(start="1921")  # Garantiza datos vacíos entre 1920-1921
        query.add_pagination(start=0, limit=1000)
        query.sort('asc')

        data = self.query.run()
        current_date = iso8601.parse_date(data[0][0])
        for row in data[1:]:
            row_date = iso8601.parse_date(row[0])
            self.assertEqual(current_date + relativedelta(months=1), row_date)
            current_date = row_date
    def test_query_fills_nulls_second_series(self):
        self.query.add_series(self.delayed_series,
                              self.rep_mode,
                              self.series_periodicity)
        self.query.add_series(self.single_series, self.rep_mode, self.series_periodicity)

        query = ESQuery(index=settings.TEST_INDEX)
        query.add_series(self.single_series, self.rep_mode, self.series_periodicity)
        query.sort('asc')
        delayed_first_date = iso8601.parse_date(query.run()[0][0])
        self.query.sort('asc')
        data = self.query.run()

        delayed_series_index = 2  # Segunda serie agregada
        for row in data:
            current_date = iso8601.parse_date(row[0])
            if current_date < delayed_first_date:
                self.assertEqual(row[delayed_series_index], None)
            else:
                break
Exemplo n.º 10
0
    def test_end_of_period(self):
        query = ESQuery(index=settings.TEST_INDEX)
        query.add_series(self.single_series, self.rep_mode,
                         self.series_periodicity)
        query.add_pagination(start=0, limit=1000)
        query.sort('asc')
        query.add_filter(start="1970")
        orig_data = query.run()

        self.query.add_series(self.single_series, self.rep_mode,
                              self.series_periodicity, 'end_of_period')
        self.query.add_filter(start="1970")
        self.query.add_collapse('year')
        eop_data = self.query.run()

        for eop_row in eop_data:
            eop_value = eop_row[1]
            year = iso8601.parse_date(eop_row[0]).year
            for row in orig_data:
                row_date = iso8601.parse_date(row[0])
                if row_date.year == year and row_date.month == 12:
                    self.assertAlmostEqual(eop_value, row[1],
                                           5)  # EOP trae pérdida de precisión
                    break
Exemplo n.º 11
0
 def setUp(self):
     self.query = ESQuery(settings.TEST_INDEX)
Exemplo n.º 12
0
    def test_preserve_query_order(self):
        data = self._run_query([self.serie, self.delayed_serie])

        query = ESQuery(index=settings.TS_INDEX)
        first_date = query.run_for_series([self.serie])['data'][0][0]
        self.assertEqual(data[0][0], first_date)
Exemplo n.º 13
0
 def setUp(self):
     self.query = ESQuery(settings.TS_INDEX)
     field = Field.objects.get(identifier=self.single_series)
     self.serie = SeriesQuery(field, self.rep_mode)
     delayed_serie_model = Field.objects.get(identifier=self.delayed_series)
     self.delayed_serie = SeriesQuery(delayed_serie_model, self.rep_mode)