<< Fare clic per visualizzazione il sommario >> Percorso: API di piattaforma > JamioPlug > JamioPlug Elastic Storage > MergeFromCsvWithFilter |
Esegue una serie di aggiornamenti su un indice del plug Elastic Storage utilizzando i dati presenti in un CSV: per ogni riga viene eseguito un aggiornamento dei Dataset che corrispondono ai campi del CSV specificati.
Le righe del CSV che non possono essere utilizzate per aggiornare i Dataset vengono restituite opzionalmente in un file CSV di scarto.
Metodo
PlugElasticStorage/MergeFromCsvWithFilter
Input |
|||
Nome |
Descrizione |
Tipo |
Opzionale |
token |
Il token di sessione (per la sessione corrente nel dominio corrente potrebbe essere null o vuoto). |
String |
Y |
configurationReference |
Collegamento alla risorsa di tipo configurazione del Plug Elastic Storage da utilizzare. E' possibile specificare un collegamento con valorizzata solo la proprietà Name pari al Nickname di una configurazione esistente. |
Reference
|
|
inputFile |
Collegamento alla risorsa contenente il file in formato CSV con i dati da importare. Può essere un riferimento ad una risorsa di tipo Attachment, FileComponent, un allegato di processo, una risorsa Document o un'altra risorsa contenente attachments. Se la risorsa è di tipo Document e contiene più componenti file viene utilizzato: •il componente principale se è di tipo File e contiene un CSV; •in assenza di componente principale, deve esserci un solo componente di tipo File che contiene un CSV. Se la risorsa contiene una lista di attachments, deve esserci un solo file di tipo CSV. Tra i campi del file CSV è possibile specificare un campo identificativo, secondo le logiche qui riportate. |
Reference |
|
options |
Definisce le opzioni di conversione da applicare ai dati riportati nel file CSV prima del salvataggio nella configurazione del plug Elastic Storage. Se per una colonna del CSV non viene specificato il ColumnType tramite CsvToListConversionOptions, qualunque contenuto del campo viene interpretato come una stringa, mentre, se specificato, si possono definire nella configurazione del Plug Elastic Storage campi numerici, date, booleani o stringhe. I nomi passati al parametro ColumnHeaders non devono contenere il carattere "." (punto). |
Y |
|
filter |
Criteri di filtro, per filtrare i Dataset dell'indice del Plug Elastic Storage da aggiornare con ogni riga del csv. Per applicare un filtro è necessario utilizzare la funzione CatalogFilter, in cui: •il soggetto del filtro è il nome della colonna nell'indice del Plug Elastic Storage. •il predicato del filtro è uno di quelli validi per i cataloghi di Elastic Storage. •il complemento del filtro, se presente, deve essere specificato con una espressione. L'espressione deve essere riportata tra apici e può essere un valore costante oppure un valore disponibile nel catalogo. Sono qui riportati degli esempi. Il filtro può essere applicato anche su dati non di primo livello, purchè l'espressione di filtro sia coerente col dato. |
|
|
commonFields |
Dato strutturato che riporta un insieme di campi comuni, il cui valore deve essere riportato nei Dataset della configurazione del Plug Elastic Storage. I campi devono essere di primo livello, non annidati. Se un campo specificato in commonFields non è presente nel file CSV, esso viene aggiunto ai dati che verranno salvati nella configurazione del Plug Elastic Storage con il suo valore riportato in tutti i Dataset della configurazione del Plug Elastic Storage. Se, invece, è presente nel file CSV, i corrispondenti valori contenuti nel file e il formato, eventualmente definito nel ColumnTypes del parametro options, vengono ignorati. Ad esempio, se il campo "Importo" presente nel file CSV è definito come intero tramite ColumnTypes, ma in commonFields è definito come stringa, allora verrà riportato nella configurazione di Elastic Storage come stringa. |
Dataset |
Y |
skipErrors |
Indica se proseguire o meno nel caso di errori di conversione dei dati contenuti nel file CSV o dovuti ai valori dell'identificativo. Se True, le righe vengono scartate e aggiunte allo ScrapReport del returnValue del metodo con i relativi messaggi d'errore. Se False, il Job viene interrotto. |
Boolean |
Y |
Output |
|||
Name |
Description |
Type |
Optional |
returnValue |
Dato strutturato con i seguenti campi: •TotalItems: numero di righe da processare (numero totale di righe meno quelle di intestazione); •ProcessedItems: numero di righe del file CSV processate correttamente; •ScrappedItems:numero di righe del file CSV processate con errore o non processate per interruzione del Job; •ScrapReport: file .zip contenente tutte le righe del file CSV, con aggiunta di tre colonne: numero di Dataset aggiornati dalla riga corrente, codice di errore e descrizione; •JobStatus: enumerativo che indica lo stato finale del job (Completed o Canceled). |
Dataset |
|
Commenti
Tra le opzioni di conversione elencate in CsvToListConversionOptions, vengono gestite nella configurazione del Plug Elastic Storage solo le seguenti:
•Delimiter
•QuotedFields
•ListOfDataset (è sempre assunto pari a true)
•HeaderRow
•ColumnHeader
•ColumnTypes
•ColumnFormats
•CultureInfo
mentre vengono ignorate:
•IgnoreLineBreaks
•ListOfDataset se valorizzato come false
E' opportuno specificare sempre nelle opzioni di conversione del CSV il parametro cultureInfo, per evitare errori di conversione dovuti ad una diversa interpretazione del formato di numeri e date per una regione o paese.
Se il CSV riporta un campo _id o Id, viene ignorato in fase di aggiornamento del Dataset dell'indice del Plug Elastic Storage.
Le righe del CSV vengono convertite in istruzioni per l'aggiornamento dei dati nell'indice del Plug Elastic Storage. Durante la conversione se:
•skipErrors è uguale a false, al primo controllo fallito la procedura viene interrotta e viene restituita un'eccezione.
•skipErrors è uguale a true, la procedura viene eseguita per tutte le righe del CSV e nel Report restituito vengono segnati i codici e i messaggi di errore in corrispondenza delle righe che li hanno generati.
Se il job viene sospeso, il processo resta nello stato idle in attesa di ripresa o interruzione.
Il metodo si comporta come segue:
Restituisce |
Condizione |
Errore |
Se la proprietà ColumnTypes delle opzioni di conversione contiene campi non esistenti |
Errore |
Se nel DataSet ottenuto dal CSV, dopo l'applicazione delle opzioni di conversione, sono presenti entrambe le colonne di nome "Id" e "_id" |
Errore |
Se il DataSet ottenuto dal CSV, dopo l'applicazione delle opzioni di conversione, contiene un campo che si chiama "_id" o "Id" e questo è di tipo diverso da testo breve e numerico intero. |
Errore |
Se inputFile contiene una Reference ad una risorsa non contenente alcun file di tipo CSV |
Errore |
Se inputFile contiene una Reference ad una risorsa contenente più di un file di tipo CSV |
Errore |
Se configurationReference è una risorsa inesistente |
Errore |
Se il CSV contiene un numero di colonne differente da riga a riga |
Errore |
Se il Job è in stato faulted. |
Autorizzazioni
Per eseguire il metodo è necessario possedere il permesso di Utilizzo sull'indice del Plug Elastic Storage.
Esempi complementi espressioni
Ogni riga del catalogo può essere utilizzata come contesto su cui poter eseguire delle operazioni.
Il contesto del complemento è denominato #data e contiene la riga iesima oggetto di verifica. Ad esempio, per riferirsi al valore contenuto nella colonna Importo del catalogo occorre scrivere #data[''Importo'']. E' possibile eseguire dei calcoli o delle concatenazioni sui valori del catalogo. Per i valori di tipo numerico decimale e numerico a virgola mobile, il separatore dei decimali da utilizzare è il punto.
Esempio1
Sulla colonna “Nro Civico” di tipo testo dell'indice del Plug Elastic Storage, si vuole creare un filtro sui Dataset con valore '50'
CatalogFilter('Nro Civico','EqualsTo',false,'50') |
Esempio2
Sulla colonna 'Importo totale' di tipo numerico decimale dell'indice del Plug Elastic Storage, si vuole creare un filtro sui Dataset con valore pari a quello del campo 'Importo' del CSV
CatalogFilter('Importo totale','EqualsTo',false,'#data[''Importo'']') |
Esempio3
Sulla colonna 'Contatto' di tipo testo dell'indice del Plug Elastic Storage, si vuole creare un filtro sui Dataset con valore pari a quello dei valori concatenati campo 'Surname', spazio, campo 'Name' del CSV
CatalogFilter(‘Contatto’, ‘EqualsTo’,false,'#data[''Surname''] + ' ' + #data[''Name'']') |
Esempio4
Sulla colonna 'Importo totale' di tipo numerico decimale dell'indice del Plug Elastic Storage, si vuole creare un filtro sui Dataset con valore pari a quello di un calcolo aritmetico su due campi del CSV
CatalogFilter('Importo totale', ‘EqualsTo’,false,'(#data[''Value''] + #data[''RealValue'']) / 2') |