def get_data_series_stats()

in data-access/nexustiles/backends/nexusproto/dao/ElasticsearchProxy.py [0:0]


    def get_data_series_stats(self, ds):

        params = {
            "size": 0,
            "query": {
                "term":{
                    "dataset_s": {
                        "value": ds
                    }
                }     
            },
            "aggs": {
                "available_dates": {
                    "composite": {
                        "size": 100,
                        "sources": [
                            {"terms_tile_max_time_dt": {"terms": {"field": "tile_max_time_dt"}}}
                        ]
                    }
                }
            }
        }

        aggregations = self.do_aggregation_all(params, 'available_dates')
        stats = {}
        stats['available_dates'] = []

        for dt in aggregations:
            stats['available_dates'].append(dt['key']['terms_tile_max_time_dt'] / 1000)

        stats['available_dates'] = sorted(stats['available_dates'])

        params = {
            "size": 0,
            "query": {
                "term":{
                    "dataset_s": {
                        "value": ds
                    }
                }
            }, 
            "aggs": {
                "min_tile_min_val_d": {
                    "min": {
                        "field": "tile_min_val_d"
                    }
                },
                "min_tile_max_time_dt": {
                    "min": {
                        "field": "tile_max_time_dt"
                    }
                },
                "max_tile_max_time_dt": {
                    "max": {
                        "field": "tile_max_time_dt"
                    }
                },
                "max_tile_max_val_d": {
                    "max": {
                        "field": "tile_max_val_d"
                    }
                }
            }
        }

        aggregations = self.do_aggregation(*(None, None, None, False, None), **params)
        stats["start"] = int(aggregations["min_tile_max_time_dt"]["value"]) / 1000
        stats["end"] = int(aggregations["max_tile_max_time_dt"]["value"]) / 1000
        stats["minValue"] = aggregations["min_tile_min_val_d"]["value"]
        stats["maxValue"] = aggregations["max_tile_max_val_d"]["value"]

        return stats