Feature Request
Problem
I'm using dj.Top to monitor the top results of a given computation. Intuitively, running MyTable & dj.Top(order_by='field DESC', limit=n) should show the top n values of this field, in this order. Instead, I need to scan the result ordered by primary key, or fetch it.
Requirements
The script below outlines expected vs actual outcome.
Demo
import datajoint as dj
schema = dj.schema("cbroz_temp")
@schema
class TopDemo(dj.Lookup):
definition = """
id : int
---
my_var: varchar(64)
my_float: float
"""
contents = [(1, "C", 2.0), (2, "D", 4.0), (3, "A", 1.0), (4, "B", 3.0)]
if __name__ == "__main__":
print("TopDemo contents:\n", TopDemo())
print(
"Order by my_float ascending:\n",
"Expected IDs 3, 4, 1. Got IDs: 1, 3, 4\n",
TopDemo & dj.Top(order_by="my_float ASC", limit=3),
)
print(
"Order by my_var descending:\n",
"Expected IDs 2, 1, 4. Got IDs: 1, 2, 4\n",
TopDemo & dj.Top(order_by="my_var DESC", limit=3),
)
Justification
This would cut down on redundant use of order_by
Alternative Considerations
Currently, I pass the same order_by arg to a fetch with format='frame'
(MyTable & dj.Top(order_by="field DESC", limit=3)).fetch(order_by"field DESC", format=Frame)
Related Errors
n/a
Please include steps to reproduce provided errors as follows:
- OS: Linux
- Python Version: 3.9.6
- MySQL Version: 8 latest
- MySQL Deployment Strategy: local docker
- DataJoint Version: 0.14.3
- Minimum number of steps to reliably reproduce the issue: see above
- Complete error stack as a result of evaluating the above steps: n/a
Screenshots
n/a
Additional Research and Context
preview is already running the alternative step of fetching as a frame
|
def preview(query_expression, limit, width): |
|
heading = query_expression.heading |
|
rel = query_expression.proj(*heading.non_blobs) |
|
if limit is None: |
|
limit = config["display.limit"] |
|
if width is None: |
|
width = config["display.width"] |
|
tuples = rel.fetch(limit=limit + 1, format="array") |
If query expressions were assigned an order_by attr by Top, QueryExpression.preview could pass this as a kwarg to preview.
Feature Request
Problem
I'm using
dj.Topto monitor the top results of a given computation. Intuitively, runningMyTable & dj.Top(order_by='field DESC', limit=n)should show the top n values of this field, in this order. Instead, I need to scan the result ordered by primary key, or fetch it.Requirements
The script below outlines expected vs actual outcome.
Demo
Justification
This would cut down on redundant use of
order_byAlternative Considerations
Currently, I pass the same
order_byarg to afetchwithformat='frame'Related Errors
n/a
Please include steps to reproduce provided errors as follows:
Screenshots
n/a
Additional Research and Context
previewis already running the alternative step of fetching as a framedatajoint-python/datajoint/preview.py
Lines 6 to 13 in 5f37f83
If query expressions were assigned an
order_byattr byTop,QueryExpression.previewcould pass this as a kwarg topreview.