Ich habe eine Spalte voller Arrays mit Split-HTTP-Anfragen. Ich habe sie auf eine von zwei Möglichkeiten durchgesickert:Wie wird die Scheibe eines Arrays in Spark SQL (Dataframes) gezogen?
|[, courses, 27381...|
|[, courses, 27547...|
|[, api, v1, cours...|
|[, api, v1, cours...|
|[, api, v1, cours...|
|[, api, v1, cours...|
|[, api, v1, cours...|
|[, api, v1, cours...|
|[, api, v1, cours...|
|[, api, v1, cours...|
|[, courses, 33287...|
|[, courses, 24024...|
In beiden Array-Typen, von ‚Kurse‘ weiter die gleichen Daten und die Struktur ist.
Ich möchte die Scheibe des Arrays mit einer case
Anweisung, wo, wenn das erste Element des Arrays ist "API", dann nehmen Sie Elemente 3 -> Ende des Arrays. Ich habe versucht, mit Python Slice-Syntax [3:]
und normalen PostgreSQL
Syntax [3, n]
, wobei n
ist die Länge des Arrays. Wenn es nicht "api" ist, dann nimm einfach den gegebenen Wert.
Mein ideales Endergebnis wäre ein Array, in dem jede Zeile die gleiche Struktur hat, mit Kursen im ersten Index für einfacheres Parsen von diesem Punkt an.
der angegebene Wert == ganzes Array? –
gegebenen Wert wäre nur die Zeile. Wenn zum Beispiel das Array '['Kurse', 'etc ...', ...]' ist, belassen Sie den Wert als, aber wenn es '['api', 'v1', 'Kurse' ist , 'etwas ...'] 'setze dann den Wert auf' ['Kurse', 'etwas', ...] ' – flybonzai
Ich denke, ein udf würde hier nützlich sein. siehe https://ragrawal.wordpress.com/2015/10/02/spark-custom-udf-example/ –