apache / apache/datafusion

support more date inferences in the csv reader

Ouverte
#9,331 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
enhancement
Langage dominant
Rust
Étoiles
9.3k
Forks
2.4k
Merge moyen
3 j 11 h
PR mergées (30 j)
360

Description

### Is your feature request related to a problem or challenge?

given a csv
```csv
mm/dd/yyyy,mm-dd-yyyy,dd/mm/yyyy,dd-mm-yyyy,yyyy/mm/dd,yyyy-mm-dd
01/01/2012,01-01-2012,01/01/2012,01-01-2012,2012/01/01,2012-01-01
02/02/2013,02-02-2013,02/02/2013,02-02-2013,2013/02/02,2013-02-02
03/03/2014,03-03-2014,03/03/2014,03-03-2014,2014/03/03,2014-03-03
04/04/2015,04-04-2015,04/04/2015,04-04-2015,2015/04/04,2015-04-04
05/05/2016,05-05-2016,05/05/2016,05-05-2016,2016/05/05,2016-05-05
06/06/2017,06-06-2017,06/06/2017,06-06-2017,2017/06/06,2017-06-06
07/07/2018,07-07-2018,07/07/2018,07-07-2018,2018/07/07,2018-07-07
```
currently only the last column will get converted to a `Date32`

```sql
❯ SELECT
arrow_typeof("mm/dd/yyyy") AS "mm/dd/yyyy",
arrow_typeof("mm-dd-yyyy") AS "mm-dd-yyyy",
arrow_typeof("dd/mm/yyyy") AS "dd/mm/yyyy",
arrow_typeof("dd-mm-yyyy") AS "dd-mm-yyyy",
arrow_typeof("yyyy/mm/dd") AS "yyyy/mm/dd",
arrow_typeof("yyyy-mm-dd") AS "yyyy-mm-dd"
from 'testdata/csv/dates.csv' limit 1;
+------------+------------+------------+------------+------------+------------+
| mm/dd/yyyy | mm-dd-yyyy | dd/mm/yyyy | dd-mm-yyyy | yyyy/mm/dd | yyyy-mm-dd |
+------------+------------+------------+------------+------------+------------+
| Utf8 | Utf8 | Utf8 | Utf8 | Utf8 | Date32 |
+------------+------------+------------+------------+------------+------------+
```

### Describe the solution you'd like

it'd be nice to auto detect more of these formats. I thought at the very least `YYYY/MM/DD` or `DD/MM/YYYY` would be valid as they are both extremely common.

### Describe alternatives you've considered

there really arent any good alternatives as there aren't any ergonomic ways to cast the utf8 field to date32 through the sql interface.

### Additional context

_No response_

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Reproduisez le problème avec l’exemple CSV et la requête SQL d’inspection des types présentée dans le rapport. Suivez l’inférence de date existante du lecteur CSV pour la colonne yyyy-mm-dd et déterminez comment les formats demandés doivent être distingués, en particulier lorsque le jour et le mois sont ambigus. C’est terminé lorsque les formats prévus sont inférés de manière cohérente et couverts par des tests.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
rust
Domaine
data-engineering
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.