Skip to content

Commit

Permalink
feat: remove subsort and key hash columns (#688)
Browse files Browse the repository at this point in the history
  • Loading branch information
bjchambers authored Aug 22, 2023
1 parent a53541e commit 7d64344
Show file tree
Hide file tree
Showing 114 changed files with 792 additions and 771 deletions.
51 changes: 36 additions & 15 deletions python/pysrc/kaskada/_result.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,9 @@ def to_pyarrow(self) -> pa.Table:
if len(batches) == 0:
return pa.Table.from_batches([], schema=pa.schema([]))

schema = batches[0].schema
return pa.Table.from_batches(batches, schema=schema)
table = pa.Table.from_batches(batches)
table = table.drop_columns(["_subsort", "_key_hash"])
return table

def iter_pyarrow(self) -> Iterator[pa.RecordBatch]:
"""
Expand All @@ -64,7 +65,13 @@ def iter_pyarrow(self) -> Iterator[pa.RecordBatch]:
"""
next_batch = self._ffi_execution.next_pyarrow()
while next_batch is not None:
yield next_batch
# Annoyingly, PyArrow doesn't suport `drop_columns` on batches.
# So we need to convert to a Table and back.
table = pa.Table.from_batches([next_batch])
table = table.drop_columns(["_subsort", "_key_hash"])
for batch in table.to_batches():
yield batch

next_batch = self._ffi_execution.next_pyarrow()

def iter_pandas(self) -> Iterator[pd.DataFrame]:
Expand All @@ -88,11 +95,29 @@ def iter_rows(self) -> Iterator[dict]:
dict
The next row as a dictionary.
"""
next_batch = self._ffi_execution.next_pyarrow()
while next_batch is not None:
for row in next_batch.to_pylist():
for batch in self.iter_pyarrow():
for row in batch.to_pylist():
yield row
next_batch = self._ffi_execution.next_pyarrow()

async def iter_pyarrow_async(self) -> AsyncIterator[pa.RecordBatch]:
"""
Asynchronously iterate over the results as PyArrow RecordBatches.
Yields
------
pa.RecordBatch
The next RecordBatch.
"""
next_batch = await self._ffi_execution.next_pyarrow_async()
while next_batch is not None:
# Annoyingly, PyArrow doesn't suport `drop_columns` on batches.
# So we need to convert to a Table and back.
table = pa.Table.from_batches([next_batch])
table = table.drop_columns(["_subsort", "_key_hash"])
for batch in table.to_batches():
yield batch

next_batch = await self._ffi_execution.next_pyarrow_async()

async def iter_pandas_async(self) -> AsyncIterator[pd.DataFrame]:
"""
Expand All @@ -103,10 +128,8 @@ async def iter_pandas_async(self) -> AsyncIterator[pd.DataFrame]:
pd.DataFrame
The next Pandas DataFrame.
"""
next_batch = await self._ffi_execution.next_pyarrow_async()
while next_batch is not None:
yield next_batch.to_pandas()
next_batch = await self._ffi_execution.next_pyarrow_async()
async for batch in self.iter_pyarrow_async():
yield batch.to_pandas()

async def iter_rows_async(self) -> AsyncIterator[dict]:
"""
Expand All @@ -117,11 +140,9 @@ async def iter_rows_async(self) -> AsyncIterator[dict]:
dict
The next row as a dictionary.
"""
next_batch = await self._ffi_execution.next_pyarrow_async()
while next_batch is not None:
for row in next_batch.to_pylist():
async for batch in self.iter_pyarrow_async():
for row in batch.to_pylist():
yield row
next_batch = await self._ffi_execution.next_pyarrow_async()

def stop(self) -> None:
"""Stop the underlying execution."""
Expand Down
14 changes: 7 additions & 7 deletions python/pytests/golden/collect_test/test_collect_basic.jsonl
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{"_time":"1996-12-19T16:39:57.000000000","_subsort":0,"_key_hash":12960666915911099378,"_key":"A","m":5.0,"collect_m":[5],"n":10.0,"collect_n":[10]}
{"_time":"1996-12-19T16:39:58.000000000","_subsort":1,"_key_hash":2867199309159137213,"_key":"B","m":24.0,"collect_m":[24],"n":3.0,"collect_n":[3]}
{"_time":"1996-12-19T16:39:59.000000000","_subsort":2,"_key_hash":12960666915911099378,"_key":"A","m":17.0,"collect_m":[5,17],"n":6.0,"collect_n":[10,6]}
{"_time":"1996-12-19T16:40:00.000000000","_subsort":3,"_key_hash":12960666915911099378,"_key":"A","m":null,"collect_m":[5,17],"n":9.0,"collect_n":[10,6,9]}
{"_time":"1996-12-19T16:40:01.000000000","_subsort":4,"_key_hash":12960666915911099378,"_key":"A","m":12.0,"collect_m":[5,17,12],"n":null,"collect_n":[10,6,9]}
{"_time":"1996-12-19T16:40:02.000000000","_subsort":5,"_key_hash":12960666915911099378,"_key":"A","m":null,"collect_m":[5,17,12],"n":null,"collect_n":[10,6,9]}
{"_time":"1996-12-19T16:40:04.000000000","_subsort":6,"_key_hash":12960666915911099378,"_key":"A","m":null,"collect_m":[5,17,12],"n":null,"collect_n":[10,6,9]}
{"_time":"1996-12-19T16:39:57.000000000","_key":"A","m":5.0,"collect_m":[5],"n":10.0,"collect_n":[10]}
{"_time":"1996-12-19T16:39:58.000000000","_key":"B","m":24.0,"collect_m":[24],"n":3.0,"collect_n":[3]}
{"_time":"1996-12-19T16:39:59.000000000","_key":"A","m":17.0,"collect_m":[5,17],"n":6.0,"collect_n":[10,6]}
{"_time":"1996-12-19T16:40:00.000000000","_key":"A","m":null,"collect_m":[5,17],"n":9.0,"collect_n":[10,6,9]}
{"_time":"1996-12-19T16:40:01.000000000","_key":"A","m":12.0,"collect_m":[5,17,12],"n":null,"collect_n":[10,6,9]}
{"_time":"1996-12-19T16:40:02.000000000","_key":"A","m":null,"collect_m":[5,17,12],"n":null,"collect_n":[10,6,9]}
{"_time":"1996-12-19T16:40:04.000000000","_key":"A","m":null,"collect_m":[5,17,12],"n":null,"collect_n":[10,6,9]}
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
{"_time":"1996-12-19T16:39:57.000000000","_subsort":0,"_key_hash":12960666915911099378,"_key":"A","b":true,"collect_b":[true]}
{"_time":"1996-12-19T16:39:58.000000000","_subsort":0,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:39:58.000000000","_subsort":1,"_key_hash":2867199309159137213,"_key":"B","b":true,"collect_b":[true]}
{"_time":"1996-12-19T16:39:59.000000000","_subsort":1,"_key_hash":2867199309159137213,"_key":"B","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:39:59.000000000","_subsort":2,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:00.000000000","_subsort":2,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:00.000000000","_subsort":3,"_key_hash":12960666915911099378,"_key":"A","b":false,"collect_b":[false]}
{"_time":"1996-12-19T16:40:01.000000000","_subsort":3,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:01.000000000","_subsort":4,"_key_hash":12960666915911099378,"_key":"A","b":false,"collect_b":[false]}
{"_time":"1996-12-19T16:40:02.000000000","_subsort":4,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:02.000000000","_subsort":5,"_key_hash":12960666915911099378,"_key":"A","b":true,"collect_b":[true]}
{"_time":"1996-12-19T16:40:03.000000000","_subsort":5,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:04.000000000","_subsort":6,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:05.000000000","_subsort":0,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:39:57.000000000","_key":"A","b":true,"collect_b":[true]}
{"_time":"1996-12-19T16:39:58.000000000","_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:39:58.000000000","_key":"B","b":true,"collect_b":[true]}
{"_time":"1996-12-19T16:39:59.000000000","_key":"B","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:39:59.000000000","_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:00.000000000","_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:00.000000000","_key":"A","b":false,"collect_b":[false]}
{"_time":"1996-12-19T16:40:01.000000000","_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:01.000000000","_key":"A","b":false,"collect_b":[false]}
{"_time":"1996-12-19T16:40:02.000000000","_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:02.000000000","_key":"A","b":true,"collect_b":[true]}
{"_time":"1996-12-19T16:40:03.000000000","_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:04.000000000","_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:05.000000000","_key":"A","b":null,"collect_b":[]}
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
{"_time":"1996-12-19T16:39:57.000000000","_subsort":0,"_key_hash":12960666915911099378,"_key":"A","b":true,"collect_b":[true]}
{"_time":"1996-12-19T16:39:58.000000000","_subsort":1,"_key_hash":2867199309159137213,"_key":"B","b":true,"collect_b":[true]}
{"_time":"1996-12-19T16:39:59.000000000","_subsort":2,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[true]}
{"_time":"1996-12-19T16:40:00.000000000","_subsort":0,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:00.000000000","_subsort":3,"_key_hash":12960666915911099378,"_key":"A","b":false,"collect_b":[false]}
{"_time":"1996-12-19T16:40:01.000000000","_subsort":1,"_key_hash":2867199309159137213,"_key":"B","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:01.000000000","_subsort":4,"_key_hash":12960666915911099378,"_key":"A","b":false,"collect_b":[false,false]}
{"_time":"1996-12-19T16:40:02.000000000","_subsort":2,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[false,false]}
{"_time":"1996-12-19T16:40:02.000000000","_subsort":5,"_key_hash":12960666915911099378,"_key":"A","b":true,"collect_b":[false,false,true]}
{"_time":"1996-12-19T16:40:03.000000000","_subsort":3,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[false,true]}
{"_time":"1996-12-19T16:40:04.000000000","_subsort":0,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[true]}
{"_time":"1996-12-19T16:40:04.000000000","_subsort":6,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[true]}
{"_time":"1996-12-19T16:40:05.000000000","_subsort":1,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:07.000000000","_subsort":2,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:39:57.000000000","_key":"A","b":true,"collect_b":[true]}
{"_time":"1996-12-19T16:39:58.000000000","_key":"B","b":true,"collect_b":[true]}
{"_time":"1996-12-19T16:39:59.000000000","_key":"A","b":null,"collect_b":[true]}
{"_time":"1996-12-19T16:40:00.000000000","_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:00.000000000","_key":"A","b":false,"collect_b":[false]}
{"_time":"1996-12-19T16:40:01.000000000","_key":"B","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:01.000000000","_key":"A","b":false,"collect_b":[false,false]}
{"_time":"1996-12-19T16:40:02.000000000","_key":"A","b":null,"collect_b":[false,false]}
{"_time":"1996-12-19T16:40:02.000000000","_key":"A","b":true,"collect_b":[false,false,true]}
{"_time":"1996-12-19T16:40:03.000000000","_key":"A","b":null,"collect_b":[false,true]}
{"_time":"1996-12-19T16:40:04.000000000","_key":"A","b":null,"collect_b":[true]}
{"_time":"1996-12-19T16:40:04.000000000","_key":"A","b":null,"collect_b":[true]}
{"_time":"1996-12-19T16:40:05.000000000","_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:07.000000000","_key":"A","b":null,"collect_b":[]}
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
{"_time":"1996-12-19T16:39:57.000000000","_subsort":0,"_key_hash":12960666915911099378,"_key":"A","b":true,"collect_b":[true]}
{"_time":"1996-12-19T16:39:58.000000000","_subsort":1,"_key_hash":2867199309159137213,"_key":"B","b":true,"collect_b":[true]}
{"_time":"1996-12-19T16:39:59.000000000","_subsort":2,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[true]}
{"_time":"1996-12-19T16:40:00.000000000","_subsort":0,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:00.000000000","_subsort":3,"_key_hash":12960666915911099378,"_key":"A","b":false,"collect_b":[false]}
{"_time":"1996-12-19T16:40:01.000000000","_subsort":1,"_key_hash":2867199309159137213,"_key":"B","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:01.000000000","_subsort":4,"_key_hash":12960666915911099378,"_key":"A","b":false,"collect_b":[false,false]}
{"_time":"1996-12-19T16:40:02.000000000","_subsort":2,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[false,false]}
{"_time":"1996-12-19T16:40:02.000000000","_subsort":5,"_key_hash":12960666915911099378,"_key":"A","b":true,"collect_b":[false,true]}
{"_time":"1996-12-19T16:40:03.000000000","_subsort":3,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[false,true]}
{"_time":"1996-12-19T16:40:04.000000000","_subsort":0,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[true]}
{"_time":"1996-12-19T16:40:04.000000000","_subsort":6,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[true]}
{"_time":"1996-12-19T16:40:05.000000000","_subsort":1,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:07.000000000","_subsort":2,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:39:57.000000000","_key":"A","b":true,"collect_b":[true]}
{"_time":"1996-12-19T16:39:58.000000000","_key":"B","b":true,"collect_b":[true]}
{"_time":"1996-12-19T16:39:59.000000000","_key":"A","b":null,"collect_b":[true]}
{"_time":"1996-12-19T16:40:00.000000000","_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:00.000000000","_key":"A","b":false,"collect_b":[false]}
{"_time":"1996-12-19T16:40:01.000000000","_key":"B","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:01.000000000","_key":"A","b":false,"collect_b":[false,false]}
{"_time":"1996-12-19T16:40:02.000000000","_key":"A","b":null,"collect_b":[false,false]}
{"_time":"1996-12-19T16:40:02.000000000","_key":"A","b":true,"collect_b":[false,true]}
{"_time":"1996-12-19T16:40:03.000000000","_key":"A","b":null,"collect_b":[false,true]}
{"_time":"1996-12-19T16:40:04.000000000","_key":"A","b":null,"collect_b":[true]}
{"_time":"1996-12-19T16:40:04.000000000","_key":"A","b":null,"collect_b":[true]}
{"_time":"1996-12-19T16:40:05.000000000","_key":"A","b":null,"collect_b":[]}
{"_time":"1996-12-19T16:40:07.000000000","_key":"A","b":null,"collect_b":[]}
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
{"_time":"1996-12-19T16:39:57.000000000","_subsort":0,"_key_hash":12960666915911099378,"_key":"A","b":true,"collect_b":null}
{"_time":"1996-12-19T16:39:58.000000000","_subsort":1,"_key_hash":2867199309159137213,"_key":"B","b":true,"collect_b":null}
{"_time":"1996-12-19T16:39:59.000000000","_subsort":2,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":null}
{"_time":"1996-12-19T16:40:00.000000000","_subsort":0,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":null}
{"_time":"1996-12-19T16:40:00.000000000","_subsort":3,"_key_hash":12960666915911099378,"_key":"A","b":false,"collect_b":null}
{"_time":"1996-12-19T16:40:01.000000000","_subsort":1,"_key_hash":2867199309159137213,"_key":"B","b":null,"collect_b":null}
{"_time":"1996-12-19T16:40:01.000000000","_subsort":4,"_key_hash":12960666915911099378,"_key":"A","b":false,"collect_b":null}
{"_time":"1996-12-19T16:40:02.000000000","_subsort":2,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":null}
{"_time":"1996-12-19T16:40:02.000000000","_subsort":5,"_key_hash":12960666915911099378,"_key":"A","b":true,"collect_b":[false,false,true]}
{"_time":"1996-12-19T16:40:03.000000000","_subsort":3,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":null}
{"_time":"1996-12-19T16:40:04.000000000","_subsort":0,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":null}
{"_time":"1996-12-19T16:40:04.000000000","_subsort":6,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":null}
{"_time":"1996-12-19T16:40:05.000000000","_subsort":1,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":null}
{"_time":"1996-12-19T16:40:07.000000000","_subsort":2,"_key_hash":12960666915911099378,"_key":"A","b":null,"collect_b":null}
{"_time":"1996-12-19T16:39:57.000000000","_key":"A","b":true,"collect_b":null}
{"_time":"1996-12-19T16:39:58.000000000","_key":"B","b":true,"collect_b":null}
{"_time":"1996-12-19T16:39:59.000000000","_key":"A","b":null,"collect_b":null}
{"_time":"1996-12-19T16:40:00.000000000","_key":"A","b":null,"collect_b":null}
{"_time":"1996-12-19T16:40:00.000000000","_key":"A","b":false,"collect_b":null}
{"_time":"1996-12-19T16:40:01.000000000","_key":"B","b":null,"collect_b":null}
{"_time":"1996-12-19T16:40:01.000000000","_key":"A","b":false,"collect_b":null}
{"_time":"1996-12-19T16:40:02.000000000","_key":"A","b":null,"collect_b":null}
{"_time":"1996-12-19T16:40:02.000000000","_key":"A","b":true,"collect_b":[false,false,true]}
{"_time":"1996-12-19T16:40:03.000000000","_key":"A","b":null,"collect_b":null}
{"_time":"1996-12-19T16:40:04.000000000","_key":"A","b":null,"collect_b":null}
{"_time":"1996-12-19T16:40:04.000000000","_key":"A","b":null,"collect_b":null}
{"_time":"1996-12-19T16:40:05.000000000","_key":"A","b":null,"collect_b":null}
{"_time":"1996-12-19T16:40:07.000000000","_key":"A","b":null,"collect_b":null}
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
{"_time":"1996-12-19T16:39:57.000000000","_subsort":0,"_key_hash":12960666915911099378,"_key":"A","m":5.0,"collect_m":[5]}
{"_time":"1996-12-19T16:39:58.000000000","_subsort":0,"_key_hash":12960666915911099378,"_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:39:58.000000000","_subsort":1,"_key_hash":2867199309159137213,"_key":"B","m":24.0,"collect_m":[24]}
{"_time":"1996-12-19T16:39:59.000000000","_subsort":1,"_key_hash":2867199309159137213,"_key":"B","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:39:59.000000000","_subsort":2,"_key_hash":12960666915911099378,"_key":"A","m":17.0,"collect_m":[17]}
{"_time":"1996-12-19T16:40:00.000000000","_subsort":2,"_key_hash":12960666915911099378,"_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:40:00.000000000","_subsort":3,"_key_hash":12960666915911099378,"_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:40:01.000000000","_subsort":3,"_key_hash":12960666915911099378,"_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:40:01.000000000","_subsort":4,"_key_hash":12960666915911099378,"_key":"A","m":12.0,"collect_m":[12]}
{"_time":"1996-12-19T16:40:02.000000000","_subsort":4,"_key_hash":12960666915911099378,"_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:40:02.000000000","_subsort":5,"_key_hash":12960666915911099378,"_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:40:03.000000000","_subsort":5,"_key_hash":12960666915911099378,"_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:40:04.000000000","_subsort":6,"_key_hash":12960666915911099378,"_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:40:05.000000000","_subsort":0,"_key_hash":12960666915911099378,"_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:39:57.000000000","_key":"A","m":5.0,"collect_m":[5]}
{"_time":"1996-12-19T16:39:58.000000000","_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:39:58.000000000","_key":"B","m":24.0,"collect_m":[24]}
{"_time":"1996-12-19T16:39:59.000000000","_key":"B","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:39:59.000000000","_key":"A","m":17.0,"collect_m":[17]}
{"_time":"1996-12-19T16:40:00.000000000","_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:40:00.000000000","_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:40:01.000000000","_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:40:01.000000000","_key":"A","m":12.0,"collect_m":[12]}
{"_time":"1996-12-19T16:40:02.000000000","_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:40:02.000000000","_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:40:03.000000000","_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:40:04.000000000","_key":"A","m":null,"collect_m":[]}
{"_time":"1996-12-19T16:40:05.000000000","_key":"A","m":null,"collect_m":[]}
Loading

0 comments on commit 7d64344

Please sign in to comment.