Come creare una colonna di indicatori per i doppi dati con una formulaMi piacerebbe creare una colonna indicatore di formula per i doppi dati applicando il seguente codice JSL:
dt << Clear Column Selection();
dt << Select Duplicate Rows();
dt << Name Selection in Column( Selected( 1 ), Unselected( 0 ) );
dt << Clear Select();
Nonostante ottenga i risultati corretti, il codice crea molti messaggi di errore. Sarebbe bello se il codice potesse essere migliorato.
Ri: Come creare una colonna di indicatori per i doppi dati con una formulaSpero che ci sia un membro della comunità in grado di risolvere la tua domanda meglio del metodo che ho usato qui sotto. Dato quello che vuoi, ci sono problemi conflittuali nel provare ad usare la capacità di selezione della tabella di dati, ma poi vuoi cancellare le selezioni. Ciò costringerebbe il ricalcolo della formula. Quindi, quello che ho fatto è di fare in modo che la formula crei un sottoinsieme della tabella di dati, eseguire i calcoli sulla tabella di dati subsettiti (isolando le selezioni) e quindi leggere i risultati dal sottoinsieme alla tabella di dati originale .... e quindi eliminare la tabella di dati subsetted. Dai un'occhiata e vedi se capisci cosa sto facendo. Sembra funzionare.
If( Row() == 1,
dt = Current Data Table();
dt << Select Columns( :Column 1, :Column 2 );
dt2 = dt << subset(
private,
dt,
selected rows( 0 ),
selected columns( 1 )
);
dt2 << Select Duplicate Rows();
dt2 << Name Selection in Column(
Column Name( "MultipleData" ),
Selected( 1 ),
Unselected( 0 )
);
);
x = dt2:MultipleData[Row()];
If( Row() == N Rows( dt ),
dt << clear column selection;
Close( dt2, nosave );
);
x;
Ri: Come creare una colonna di indicatori per i doppi dati con una formulaCiao Jim,
Grazie per il vostro sostegno. Ho provato a semplificare il mio argomento. Il mio obiettivo è creare una colonna in cui siano indirizzati i dati multipli. Sono stato in grado di farlo con il seguente JSL:
Names Default To Here( 1 );
dt = Current Data Table();
dt << Select Columns( :Column 1, :Column 2);
dt << Select Duplicate Rows();
dt << Name Selection in Column(
Column Name( "MultipleData" ),
Selected( 1 ),
Unselected( 0 ));
dt << Clear Select();
per più dati dalla colonna 1 e 2, del file allegato. Questo funziona bene. Tuttavia, poiché i file di lavoro vengono frequentemente aggiornati con nuovi dati tramite SQL, preferirei creare una formula "MultipleData".
Purtroppo ricevo solo zeri, se viene applicato l'ultimo codice. Quale potrebbe essere una soluzione?
Ri: Come creare una colonna di indicatori per i doppi dati con una formulaOK ... il mio commento precedente era basato sul presupposto che il codice fosse eseguito in codice aperto, piuttosto che come una formula. Usando questo come una formula, ci sono alcune preoccupazioni.
- Il puntatore alla tabella di dati, dt, deve essere definito nella formula, se hai intenzione di fare riferimento a esso.
- Stai utilizzando funzioni che si spostano automaticamente su tutte le righe quando vengono eseguite. Le formule si spostano anche su tutte le righe in una tabella di dati ed eseguono la formula una volta per ogni riga. Pertanto, l'uso del codice nel modo in cui lo si sta facendo significa che si sta eseguendo "Seleziona le righe duplicate" più e più volte, quando in attuallity, è necessario eseguirlo solo una volta.
- La linea rossa per la prima linea nella fomula è davvero un avvertimento, non un errore.
Di seguito è riportata una versione del codice che utilizzerei, se si utilizza questa come formula.
If( Row() == 1,
dt = Current Data Table();
dt << Clear Column Selection();
dt << Select Duplicate Rows();
dt << Name Selection in Column( Selected( 1 ), Unselected( 0 ) );
dt << Clear Select();
);
Non sono del tutto chiaro sul motivo per cui dovresti inserirlo in una colonna formula, dal momento che la colonna in cui la inserisci, conterrà tutti i valori mancanti ....... quindi potresti voler ripensare al tuo processo.
Ri: Come creare una colonna di indicatori per i doppi dati con una formulaPrimo
All'interno dell'editor di formule la prima riga di codice è contrassegnata con la linea rossa.
Secondo
Nel caso in cui la formula venga applicata, viene visualizzata una finestra pop-up con i messaggi come "Invia expriptable Scriptable Objects ...; Send, dt << / * ### * /" o "Selection () / * ### * /"
Ri: Come creare una colonna di indicatori per i doppi dati con una formulaIl tuo codice sembra buono ...... quali errori stai ottenendo?
Ri: Come creare una colonna di indicatori per i doppi dati con una formulaCiao Jim,
Grazie per la soluzione. Ho testato il tuo codice con una colonna formula, su un grande database (alcune 100k righe e 100 colonne). Ha funzionato bene.
La mia soluzione è il seguente codice JSL:
Names Default To Here( 1 );
dt = Current Data Table();
//Delete preveious version of the indicator column
dt << Delete Columns("MultipleData");
wait(2);
//Create the new version of the indicator column
dt << Select Columns( :Column 1, :Column 2);
dt << Select Duplicate Rows();
dt << Name Selection in Column(
Column Name( "MultipleData" ),
Selected( 1 ),
Unselected( 0 ));
dt << Clear Select();
dt << Clear Column Selection();Come ho detto prima, una soluzione di formula, come il tuo codice, è preferibile. È più conveniente, nel caso in cui il set di dati sia aggiornato.