Advanced Data Dictionary
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 8/100
Direzione di ricerca
This is an open design question, not a code task: the issue lists six storage options for qsv statistics and frequency tables and does not choose one. No files or tests are named. Before any work, a maintainer (the issue asks @wardi) needs to pick an option. Done would mean a recorded decision and a scoped first step, not an implementation.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Currently, CKAN's Data Dictionary is limited to data type, label and description.
With qsv stats we collect descriptive statistics when we infer each column's data type during the Analysis phase of a DP+ job.
Currently - sum, min/max, min/max length, mean, stddev, variance, quartiles, median, modes, cardinality & nullcount.
When cardinality = rowcount and nullcount = 0, we can infer that a column can be a primary key and be a unique index, and annotate its data dictionary accordingly (and going further, create a unique index on it after the Copy phase).
When nullcount = rowcount, we can infer that a column is empty, and note it in the data dictionary as well.
And with qsv frequency - we can also compile frequency tables for the top N values of a column, and if the cardinality of a column is below a given N threshold, we can even infer the domain of a column as enumerated values.
Since we paid for compiling the statistics when we inferred the column data types already, we can store these statistics in the data dictionary as well as "schemata" (a term I coined for schema metadata) for "free" ( or nearly free, as running qsv frequency is not currently done by DP+, but even against a large file like the 1m row, 500mb NYC 311 benchmark data, it only takes 2.8 seconds).
We have several options:
- add additional properties to the existing Data Dictionary JSON which is stored as a table comment
- keep the existing Data Dictionary JSON as is, and store
RESOURCE_NAME-stats.csvandRESOURCE_NAME-freq.csvas "system resources", that can be downloaded and queried with the CKAN API. - extend the Data Dictionary with additional properties, and also store the
-statsand-freqCSVs as system resources. - alternatively, instead of using the original Data Dictionary JSON, we can instead insert the jsonschema file produced by the
qsv schemacommand. The added benefit of doing so is that we use the jsonschema file withqsv validateto check if an external file conforms to the schema. And sinceqsv validateaccepts a jsonschema URL, you can even validate an external file against the CKAN hosted jsonschema. - Do 4, and add the "system resources" like 3.
- Store all these schemata data in a "schemata catalog" in the datastore database or a dedicated schemata database as native PostgreSQL objects. Perhaps, by using a resource's ID and adding a special prefix and/or suffix to it (e.g.
RESOURCEID_datadict,RESOURCEID_stats,RESOURCEID_freq). Doing so has the added benefit of being able to query all the data dictionaries - e.g. columns with the same name, infer related resources, suggest joins, etc. and other "Linked Data" like queries and inferences in a performant manner.
@wardi , since you originally implemented the Data Dictionary, would be keen to get your opinion.
- Lingua principale
- Python
- Stelle
- 47
- Fork
- 33
- Merge medio
- 2h 28m
- PR unite (30g)
- 10
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di dathere/datapusher-plus
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
dathere/datapusher-plus#359 ·
I maintainer di solito rispondono entro 1 giorno
-
"Total elapsed time" in the JOB DONE line is ~1.79 billion seconds (perf_counter overwrites the time.time() start)Forse già presa @tino097 l’ha presa 14 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 35/100
dathere/datapusher-plus#355 ·
I maintainer di solito rispondono entro 1 giorno
-
FormulaProcessing stage always skipped on CKAN 2.10+: ckan.plugins is a list, stage calls .split() on itForse già presa @tino097 l’ha presa 14 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 25/100
dathere/datapusher-plus#354 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
dathere/datapusher-plus#340 ·
I maintainer di solito rispondono entro 1 giorno
-
Prefect requires Sqlalchemy2Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 53/100
dathere/datapusher-plus#338 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di dathere/datapusher-plus
Issue simili
-
documentation good first issue priority: P2 status: ready
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
RhinoLink-Tech/data-fabric#500 ·
I maintainer di solito rispondono entro 1 giorno
-
backlog
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
EchoTools/nevr-runtime#2384 ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: The H2 series' and the H3C's fan 3 is labelled "Chamber Fan", Bambu calls it the exhaust fanApertaarea:ui
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
btclib-org/btclib#3062 ·
I maintainer di solito rispondono entro 1 giorno
-
area:evals area:infra enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
jse-avl/support-bot#4 · 1 commento ·