def get_asset_data(self, asset_id='', data_format='', data_filter=None): asset_obj = self._validate_resource_id("asset_id", asset_id, RT.Instrument) dataset_objs, _ = self.rr.find_objects(asset_id, PRED.hasDataset, RT.Dataset, id_only=False) if not dataset_objs: raise BadRequest("Could not find dataset") dataset_obj = dataset_objs[0] from ion.data.persist.hdf5_dataset import DatasetHDF5Persistence persistence = DatasetHDF5Persistence(dataset_obj._id, dataset_obj.schema_definition, "hdf5") data_filter1 = dict(transpose_time=True, time_format="unix_millis", max_rows=1000) data_filter1.update(data_filter or {}) data_info = dict(dataset_id=dataset_obj._id, ts_generated=get_ion_ts(), data={}, info={}, num_rows=0) if data_filter1.get("get_info", None) is True: data_info["variables"] = [ var_info["name"] for var_info in dataset_obj.schema_definition["variables"] ] data_info["schema"] = dataset_obj.schema_definition res_info = persistence.get_data_info(data_filter1) data_info["info"].update(res_info) if data_filter1.get("include_data", True): raw_data = persistence.get_data(data_filter=data_filter1) data_info["data"] = raw_data data_info["num_rows"] = len( raw_data.values()[0]) if raw_data else 0 return data_info
def download_asset_data(self, asset_id='', data_format='', data_filter=None): asset_obj = self._validate_resource_id("asset_id", asset_id, RT.Instrument) dataset_objs, _ = self.rr.find_objects(asset_id, PRED.hasDataset, RT.Dataset, id_only=False) if not dataset_objs: raise BadRequest("Could not find dataset") dataset_obj = dataset_objs[0] if data_format and data_format != "hdf5": raise BadRequest("Unsupported download data format") from ion.data.persist.hdf5_dataset import DatasetHDF5Persistence persistence = DatasetHDF5Persistence(dataset_obj._id, dataset_obj.schema_definition, "hdf5") data_filter1 = dict(transpose_time=True, time_format="unix_millis", max_rows=100000, start_time=get_ion_ts_millis() - 86400000) data_filter1.update(data_filter or {}) temp_filename = persistence.get_data_copy(data_filter=data_filter1) resp_hdrs = { "Content-Disposition": 'attachment; filename="ds_%s.hdf5"' % asset_obj._id } mr = MediaResponse(media_mimetype="application/octet-stream", body=temp_filename, internal_encoding="filename", response_headers=resp_hdrs) return mr