|
@@ 165-202 (lines=38) @@
|
| 162 |
|
|
| 163 |
|
self.query["dataset"] = {} |
| 164 |
|
|
| 165 |
|
def addStream(self, stream, interpolator="closest", t1=None, t2=None, dt=None, limit=None, i1=None, i2=None, transform=None,colname=None): |
| 166 |
|
"""Adds the given stream to the query construction. Additionally, you can choose the interpolator to use for this stream, as well as a special name |
| 167 |
|
for the column in the returned dataset. If no column name is given, the full stream path will be used. |
| 168 |
|
|
| 169 |
|
addStream also supports Merge queries. You can insert a merge query instead of a stream, but be sure to name the column:: |
| 170 |
|
|
| 171 |
|
d = Dataset(cdb, t1=time.time()-1000,t2=time.time(),dt=10.) |
| 172 |
|
d.addStream("temperature","average") |
| 173 |
|
d.addStream("steps","sum") |
| 174 |
|
|
| 175 |
|
m = Merge(cdb) |
| 176 |
|
m.addStream("mystream") |
| 177 |
|
m.addStream("mystream2") |
| 178 |
|
d.addStream(m,colname="mycolumn") |
| 179 |
|
|
| 180 |
|
result = d.run() |
| 181 |
|
""" |
| 182 |
|
|
| 183 |
|
streamquery = query_maker(t1, t2, limit, i1, i2, transform) |
| 184 |
|
param_stream(self.cdb, streamquery, stream) |
| 185 |
|
|
| 186 |
|
streamquery["interpolator"] = interpolator |
| 187 |
|
|
| 188 |
|
if colname is None: |
| 189 |
|
# What do we call this column? |
| 190 |
|
if isinstance(stream, six.string_types): |
| 191 |
|
colname = stream |
| 192 |
|
elif isinstance(stream, Stream): |
| 193 |
|
colname = stream.path |
| 194 |
|
else: |
| 195 |
|
raise Exception( |
| 196 |
|
"Could not find a name for the column! use the 'colname' parameter.") |
| 197 |
|
|
| 198 |
|
if colname in self.query["dataset"] or colname is "x": |
| 199 |
|
raise Exception( |
| 200 |
|
"The column name either exists, or is labeled 'x'. Use the colname parameter to change the column name.") |
| 201 |
|
|
| 202 |
|
self.query["dataset"][colname] = streamquery |
| 203 |
|
|
| 204 |
|
def run(self): |
| 205 |
|
"""Runs the dataset query, and returns the result""" |
|
@@ 132-163 (lines=32) @@
|
| 129 |
|
|
| 130 |
|
""" |
| 131 |
|
|
| 132 |
|
def __init__(self, cdb, x=None, t1=None, t2=None, dt=None, limit=None, i1=None, i2=None, transform=None, posttransform=None): |
| 133 |
|
"""In order to begin dataset generation, you need to specify the reference time range or stream. |
| 134 |
|
|
| 135 |
|
To generate a T-dataset:: |
| 136 |
|
d = Dataset(cdb, t1=start, t2=end, dt=tchange) |
| 137 |
|
To generate an X-dataset:: |
| 138 |
|
d = Dataset(cdb,"mystream", i1=start, i2=end) |
| 139 |
|
|
| 140 |
|
Note that everywhere you insert a stream name, you are also free to insert Stream objects |
| 141 |
|
or even Merge queries. The Dataset query in ConnectorDB supports merges natively for each field. |
| 142 |
|
|
| 143 |
|
The only "special" field in this query is the "posttransform". This is a special transform to run on the |
| 144 |
|
entire row of data after the all of the interpolations complete. |
| 145 |
|
""" |
| 146 |
|
self.cdb = cdb |
| 147 |
|
self.query = query_maker(t1, t2, limit, i1, i2, transform) |
| 148 |
|
|
| 149 |
|
if x is not None: |
| 150 |
|
if dt is not None: |
| 151 |
|
raise Exception( |
| 152 |
|
"Can't do both T-dataset and X-dataset at the same time") |
| 153 |
|
# Add the stream to the query as the X-dataset |
| 154 |
|
param_stream(self.cdb, self.query, x) |
| 155 |
|
elif dt is not None: |
| 156 |
|
self.query["dt"] = dt |
| 157 |
|
else: |
| 158 |
|
raise Exception("Dataset must have either x or dt parameter") |
| 159 |
|
|
| 160 |
|
if posttransform is not None: |
| 161 |
|
self.query["posttransform"] = posttransform |
| 162 |
|
|
| 163 |
|
self.query["dataset"] = {} |
| 164 |
|
|
| 165 |
|
def addStream(self, stream, interpolator="closest", t1=None, t2=None, dt=None, limit=None, i1=None, i2=None, transform=None,colname=None): |
| 166 |
|
"""Adds the given stream to the query construction. Additionally, you can choose the interpolator to use for this stream, as well as a special name |