Join con xan: casi base, fuzzy, regex e URL¶
Questa pagina mostra i casi principali di join con esempi minimi.
Questa guida è scritta per il comportamento di xan 0.56.0 o superiore:
- join classici con
xan join; - join fuzzy/regex/url con
xan fuzzy-join(-rper regex,-uper URL prefix).
File di esempio (download raw)¶
dati_a.csvdati_b.csvpersone.csvordini.csvlettere.csvnumeri.csvtesti.csvpattern.csvpattern_fuzzy.csvlink.csvsorgenti_url.csv
Per eseguire i comandi così come sono scritti sotto, posizionati nella cartella:
Join standard (xan join)¶
Sintassi base:
Parametri chiave:
<campi_sx>: una o più colonne chiave del file di sinistra (es.idoppure più campi separati da virgolaanno,comune);<file_sx.csv>: CSV di sinistra;<campi_dx>: una o più colonne chiave del file di destra, nello stesso ordine di<campi_sx>;<file_dx.csv>: CSV di destra.
Regola pratica:
- puoi fare join su un campo (
id); - puoi fare join su più campi (
anno,comune), ma il numero dei campi deve coincidere a sinistra e a destra.
Esempio multi-colonna:
dati_a.csv
dati_b.csv
Output (estratto):
Input usati negli esempi:
persone.csv
ordini.csv
Inner join (default)¶
Output (estratto):
Left join¶
Output (estratto):
Right join¶
Output (estratto):
Full join¶
Output (estratto):
Cross join¶
Input usati:
lettere.csv
numeri.csv
Output:
Fuzzy join (substring)¶
Esempio classico: hai una lista di parole/etichette e vuoi agganciare i testi dove compaiono.
Sintassi usata:
Parametri chiave:
-i: confronto case-insensitive (ignora maiuscole/minuscole);--left: mantiene tutte le righe del file testi anche quando non c'è match;<colonne_testo>: una o più colonne in cui cercare (quitesto, ma puoi usare anchetitolo,testo);<file_testi.csv>: file dove cercare (quitesti.csv);<colonna_pattern>: colonna con le stringhe/pattern da cercare (quineedle);<file_pattern.csv>: file che contiene i pattern (quipattern_fuzzy.csv).
Input usati:
testi.csv
id,testo
1,"Il Comune di Roma annuncia nuovi cantieri sulla mobilità urbana."
2,"Bando scuola digitale per laboratori e formazione docenti a Milano."
3,"Nuovo parco urbano con 300 alberi nel quartiere nord."
pattern_fuzzy.csv
Lettura rapida del comando:
- cerca in
testo(dentrotesti.csv) i valori dineedle(dentropattern_fuzzy.csv); - con
-itrova match anche se cambia il maiuscolo/minuscolo.
Output (estratto):
id,testo,tema,needle
2,Bando scuola digitale per laboratori e formazione docenti a Milano.,scuola,scuola
3,Nuovo parco urbano con 300 alberi nel quartiere nord.,verde,parco
Versione left (mantiene tutte le righe dei testi):
Differenza rispetto al comando precedente:
- con
--leftottieni anche le righe senza match, con colonne pattern vuote.
Output (estratto):
id,testo,tema,needle
1,Il Comune di Roma annuncia nuovi cantieri sulla mobilità urbana.,,
2,Bando scuola digitale per laboratori e formazione docenti a Milano.,scuola,scuola
3,Nuovo parco urbano con 300 alberi nel quartiere nord.,verde,parco
Regex join¶
Sintassi usata:
Parametri chiave:
-r: attiva il matching via espressioni regolari;-i: rende il matching case-insensitive;<colonne_testo>: una o più colonne in cui cercare (quitesto, ma puoi usare anchetitolo,testo);<file_testi.csv>: file da analizzare (quitesti.csv);<colonna_regex>: colonna con i pattern regex (quipattern);<file_regex.csv>: file che contiene i regex pattern (quipattern.csv).
Input aggiuntivo usato:
pattern.csv
Lettura rapida del comando:
- cerca in
testoi pattern regex definiti nella colonnapattern; - con
-rinterpreta i pattern come regex, non come semplice sottostringa.
Output (estratto):
id,testo,tema,pattern
1,Il Comune di Roma annuncia nuovi cantieri sulla mobilità urbana.,mobilita,mobilit[aà]
2,Bando scuola digitale per laboratori e formazione docenti a Milano.,scuola,scuola
3,Nuovo parco urbano con 300 alberi nel quartiere nord.,verde,parco|alberi
Quando usarlo:
- hai una tabella di pattern (keyword o regex);
- vuoi etichettare automaticamente testi con tema/categoria.
URL join¶
Sintassi usata:
Parametri chiave:
-u: attiva il matching per prefisso URL;-S: semplifica gli URL prima del confronto (schema,www, ecc.);<colonne_url>: una o più colonne URL da classificare (quilink, ma puoi indicare più colonne se servono);<file_link.csv>: file con gli URL completi (quilink.csv);<colonna_prefisso>: colonna con i prefissi/domini da usare come riferimento (quiurl);<file_sorgenti.csv>: file con la mappatura sorgenti (quisorgenti_url.csv).
Input usati:
link.csv
link
https://www.comune.roma.it/notizie/mobilita
https://dati.regione.lombardia.it/dataset/trasporti
https://example.org/post/1
sorgenti_url.csv
Lettura rapida del comando:
- confronta ogni valore di
linkcon i prefissi presenti inurl; - con
-Saumenta i match utili anche se gli URL hanno forme diverse.
Output (estratto):
link,fonte,url
https://www.comune.roma.it/notizie/mobilita,comune-roma,comune.roma.it
https://dati.regione.lombardia.it/dataset/trasporti,regione-lombardia,dati.regione.lombardia.it
Quando usarlo:
- devi attribuire URL completi a domini/prefissi noti;
- vuoi arricchire rapidamente liste di link con fonte/editore/categoria.