to_dataset keeps the last row per dim tuple instead of raising on duplicates
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 58/100
Rechercherichtung
Start at to_dataset in the result class and read its docstring's Raises section, which promises a ValueError on duplicate dim tuples. Run the repro in the issue (3 time steps, lat/lon grid, SELECT without time) to confirm 12 rows collapse to 4. Done when that case raises ValueError naming the duplicate dims, and a test covers it. The issue leaves open whether the check should always run or only when dims were inferred, so confirm that with maintainers first.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
When a query projects a dimension away, the rows that dimension separated collapse onto the same dim tuple. to_dataset builds a grid from them anyway, keeping whichever row comes last, and returns it without a warning. The docstring says it raises instead:
Raises:
ValueError: ``dims`` cannot be inferred, names a missing
column, or the result has duplicate dim tuples;
Repro on 0.3.3 and 0.4.0rc1:
import numpy as np
import pandas as pd
import xarray as xr
from xarray_sql import XarrayContext
temp = np.arange(12.0).reshape(3, 2, 2)
ds = xr.Dataset(
{"temperature": (["time", "lat", "lon"], temp)},
coords={
"time": pd.date_range("2020-01-01", periods=3),
"lat": [10.0, 20.0],
"lon": [100.0, 110.0],
},
)
ctx = XarrayContext()
ctx.from_dataset("temperature", ds, chunks={"time": 3, "lat": 2, "lon": 2})
result = ctx.sql("SELECT lat, lon, temperature FROM temperature")
print(len(result.to_pandas())) # 12 rows, 4 unique (lat, lon)
print(result.to_dataset(dims=["lat", "lon"])["temperature"].values)
12
[[ 8. 9.]
[10. 11.]]
That is temp[-1], the last time step. Two thirds of the input is gone and nothing says so. Inferring the dims (dims=None) gives the same result.
The value is also arbitrary rather than merely lossy: it depends on the order rows happen to arrive in, so the same query can return different numbers across partitionings.
Raising the documented ValueError seems right to me, since the alternative is picking an aggregation the caller did not ask for. Detecting it costs a scan, so making it conditional (or checking only when dims was inferred) may be worth it.
I hit this from Lumen, where a projecting SQL transform drops a dim before the source grids the result. Happy to send a PR if you want it fixed this way.
- Vorherrschende Sprache
- Python
- Sterne
- 142
- Forks
- 19
- Ø Merge
- 1 T. 9 Std.
- Gemergte PRs (30 T.)
- 9
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus xqlsystems/xarray-sql
-
documentation
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 85/100
xqlsystems/xarray-sql#268 ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
xqlsystems/xarray-sql#267 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 74/100
xqlsystems/xarray-sql#243 ·
Maintainer antworten meist innerhalb von 1 Tag
-
publish.yml: the TestPyPI verification step is unreachable (and installs the wrong package name)Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
xqlsystems/xarray-sql#242 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
xqlsystems/xarray-sql#237 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in xqlsystems/xarray-sql
Ähnliche Issues
-
documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
ianktoo/project-monitor#14 ·
-
security
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
btclib-org/btclib-wallet#478 ·
Maintainer antworten meist innerhalb von 1 Tag
-
security
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
btclib-org/btclib#2727 ·
Maintainer antworten meist innerhalb von 1 Tag
-
good first issue lead variant:container
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
radialmonster/orf-cleanroom#10 ·
Maintainer antworten meist innerhalb von 1 Tag
-
gdsa opencode: keep-alive cleanup trap fails with 'keepalive_pid: unbound variable'Evtl. vergeben @darribas hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100