'Return an iterable of models.Statistics instances.
Items are containing meter statistics described by the query
parameters. The filter must have a meter value set.
.. note::
Due to HBase limitations the aggregations are implemented
in the driver itself, therefore this method will be quite slow
because of all the Thrift traffic it is going to create.'

def get_meter_statistics(self, sample_filter, period=None, groupby=None, aggregate=None):

    if groupby:
        raise ceilometer.NotImplementedError('Group    by    not    implemented.')
    if aggregate:
        raise ceilometer.NotImplementedError('Selectable    aggregates    not    implemented')
    with self.conn_pool.connection() as conn:
        meter_table = conn.table(self.METER_TABLE)
        (q, start, stop, columns) = hbase_utils.make_sample_query_from_filter(sample_filter)
        columns.extend(['f:timestamp', 'f:counter_volume', 'f:counter_unit'])
        meters = map(hbase_utils.deserialize_entry, list((meter for (ignored, meter) in meter_table.scan(filter=q, row_start=start, row_stop=stop, columns=columns))))
    if sample_filter.start_timestamp:
        start_time = sample_filter.start_timestamp
    elif meters:
        start_time = meters[(-1)][0]['timestamp']
    else:
        start_time = None
    if sample_filter.end_timestamp:
        end_time = sample_filter.end_timestamp
    elif meters:
        end_time = meters[0][0]['timestamp']
    else:
        end_time = None
    results = []
    if (not period):
        period = 0
        period_start = start_time
        period_end = end_time
    for meter in meters[::(-1)]:
        ts = meter[0]['timestamp']
        if period:
            offset = (int((timeutils.delta_seconds(start_time, ts) / period)) * period)
            period_start = (start_time + datetime.timedelta(0, offset))
        if ((not results) or (not (results[(-1)].period_start == period_start))):
            if period:
                period_end = (period_start + datetime.timedelta(0, period))
            results.append(models.Statistics(unit='', count=0, min=0, max=0, avg=0, sum=0, period=period, period_start=period_start, period_end=period_end, duration=None, duration_start=None, duration_end=None, groupby=None))
        self._update_meter_stats(results[(-1)], meter[0])
    return results
