opendatasicilia / tansignari

"T'ansignari e t'appeddiri"
http://tansignari.opendatasicilia.it
Creative Commons Attribution 4.0 International
18 stars 10 forks source link

Come esplodere una lista di valori di un campo, e poi raggruppare per questi valori #198

Closed aborruso closed 2 years ago

aborruso commented 2 years ago

Senza fretta, per ogni espressione ci sono vari tag, ma più espressioni possono avere lo stesso tag, esempio:

current è presente come tag nella funzione $geometry , $x_at e chissà in quante altre.

con miller posso creare un csv, a partire dall'output generato sopra, con due colonne: tags e expression: dove in tags c'è, appunto, il tag e nella colonna expression tutte le espressioni che usano quel tag.

allego file di output generato: tags_expressions.csv

Originally posted by @pigreco in https://github.com/opendatasicilia/tansignari/issues/197#issuecomment-1034685898

aborruso commented 2 years ago

Ciao @pigreco , a partire dal file che hai condiviso, puoi ad esempio prima esplodere per tags e poi implodere per name, usando il verbo nest di Miller:

mlr --csv nest  --evar "," -f tags then nest --ivar "," -f name  tags_expressions.csv >out.csv
tags name
current $geometry,$id,$length,$map,$page,$perimeter,$rownum,$scale,$vertex_as_point,$vertex_index,$vertex_x,$vertex_y,$vertex_z,$x,$x_at,$y,$y_at,$z,current_parent_value,current_value,now,overlay_contains,overlay_crosses,overlay_disjoint,overlay_equals,overlay_intersects,overlay_nearest,overlay_touches,overlay_within,sqlite_fetch_and_increment,to_date,to_datetime
processing $geometry,parameter
functions $geometry,Meshes,age
row $id,$rownum,current_value,sqlite_fetch_and_increment,uuid
distance $length,$perimeter,buffer,densify_by_distance,distance_to_vertex,hamming_distance,hausdorff_distance,length,length3D,levenshtein,line_interpolate_angle,line_interpolate_point,line_locate_point,overlay_nearest,perimeter,project,simplify,sinuosity,straight_distance_2d
planimetric $length,$perimeter,area,length,length3D,perimeter
length $length,$perimeter,aggregate,hamming_distance,hausdorff_distance,length,length3D,lpad,max_length,min_length,rpad,sinuosity,tapered_buffer
perimeter $length,$perimeter,perimeter
linestring $length,angle_at_vertex,extend,extrude,length,line_interpolate_angle,line_interpolate_point,line_locate_point,line_merge,offset_curve,single_sided_buffer,straight_distance_2d
project $length,$perimeter,area,length3D,perimeter,project_color

Un'altra buona ricetta

aborruso commented 2 years ago

@pigreco piccola nota: per questo usa Miller 5, che la 6 ha un comportamento strano

pigreco commented 2 years ago

ricetta fatta e pubblicate, chiudo issue e grazie mille

https://tansignari.opendatasicilia.it/ricette/riga_comando/esplodere-una_lista_di_valori_di_un_campo/