Seleziona un numero dinamico di colonne con JSL, selezionando le colonne che soddisfano una condizionehttps://www.jmp.com/support/help/14-2/use-set-selected-to-select-columns.shtml
Qual è il modo migliore per riscrivere qualcosa del genere?
L'intento è che DT sia un join di TRANSPOSE e CATEGORY_TABLE.
- CATEGORY_TABLE è una tabella a una colonna con la colonna Categoria
- TRANSPOSE è il risultato di una trasposizione dei dati
Il trucco è che TRANSPOSE non ha sempre lo stesso numero di colonne. In modo confuso, l'output della funzione di trasposizione nomina le colonne aggiuntive Riga 1, Riga 2, ecc.
- Le prime due colonne di TRANSPOSE sono sempre le stesse.
- La riga 1 della colonna esisterà sempre come terza colonna.
- Colonna/e La riga 2 e successive potrebbero esistere a seconda del set di dati.
Posso scrivere la funzione Select() in modo tale che Join() selezioni almeno la colonna Riga 1 e poi se ce ne sono altre nell'ultima colonna?
// This section is only build to handle two columns named Row 1 and Row 2
DT = Data Table( TRANSPOSE ) << Join(
With( Data Table( CATEGORY_TABLE ) ),
Select( :Forecast Material ),
SelectWith( :Category ),
Select( :Row 1, :Row 2 ), // sometimes there is only one row, sometimes there are more than one rows ******How to handle this?********
By Matching Columns( :Label = :Category ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 )
);
Ri: Selezionare un numero dinamico di righe con JSL, selezionando le righe che soddisfano una condizioneGrazie BSwid. Fammi sapere come funziona.
Ri: Selezionare un numero dinamico di righe con JSL, selezionando le righe che soddisfano una condizioneGrazie Don. Sto cercando di aggiornare il codice di qualcun altro. Penso che questo faccia quello che vogliamo. È necessario prendersi un po' di tempo per convalidare prima di accettare come soluzione. Non volevo che pensassi che non ho visto e apprezzato la tua risposta. Stavo lavorando con questo suggerimento ieri. Grazie!Ri: Selezionare un numero dinamico di righe con JSL, selezionando le righe che soddisfano una condizioneRimuovi gli argomenti che contengono "Seleziona":
DT = Data Table( TRANSPOSE ) << Join(
With( Data Table( CATEGORY_TABLE ) ),
By Matching Columns( :Label = :Category ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 )
);
I risultati conterranno tutte le colonne di entrambe le tabelle.
Ri: Selezionare un numero dinamico di righe con JSL, selezionando le righe che soddisfano una condizioneHo provato qualcosa del genere e ho ricevuto l'errore Colonna non trovata {1} nell'accesso o nella valutazione di "Argomento errato"
Che immagino sia l'argomento all'interno di Select() all'interno di Join() .
Ho pensato che forse avrei potuto assegnare un vettore di colonne a una variabile e utilizzare la variabile come argomento in Select().
// Get a list of the column names
colList = TRANSPOSE << Get Column Names();
// Starting with column 3, select
For(i=3,i<= N Cols( TRANSPOSE ), i++, COLUMN( TRANSPOSE , colList[i]) << Set Selected(1) ) ;
// Assign those selected columns to a variable
Select_cols = TRANSPOSE << Get Selected Columns();
//then feed that variable into the Select() withing Join()
<SPAN class="token comment">// GIUNTURA</SPAN>
DT <SPAN class="token operator">=</SPAN> <SPAN class="token function">Tabella dati</SPAN><SPAN class="token punctuation">(</SPAN> TRANSPOSE <SPAN class="token punctuation">)</SPAN> <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages">Giuntura</SPAN><SPAN class="token punctuation">(</SPAN>
With<SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Tabella dati</SPAN><SPAN class="token punctuation">(</SPAN> CATEGORY_TABLE <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Select<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Forecast Material <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
SelectWith<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Category <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Select<SPAN class="token punctuation">(</SPAN> Select_cols <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> /// was Select<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Row <SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token punctuation">:</SPAN>Row <SPAN class="token number">2</SPAN> <SPAN class="token punctuation">)</SPAN>
By Matching Columns<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Label <SPAN class="token operator">=</SPAN> <SPAN class="token punctuation">:</SPAN>Category <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Drop multiples<SPAN class="token punctuation">(</SPAN> <SPAN class="token number">0</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token number">0</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Include Nonmatches<SPAN class="token punctuation">(</SPAN> <SPAN class="token number">0</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token number">0</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Preserve main table order<SPAN class="token punctuation">(</SPAN> <SPAN class="token number">1</SPAN> <SPAN class="token punctuation">)</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>