Come utilizzare Seleziona Dove () con Contiene () per trovare corrispondenze parziali nella tabella dati?Ho una lista
myParaList = {Current_I20_, Voltage_CIB_, Capacitance_DIFF_, Resistance_FURR_};e una tabella dati con una colonna chiamata Parametro con diverse righe, alcune delle quali hanno voci come
Current_I20_Stage2
Voltage_CIB_Stage3
Capacitance_DIFF_corner_Stage1
Resistance_FURR__side_Stage3
Utilizzando la mia lista con Contiene() per estrarre i nomi completi dei parametri dalla tabella dati in un elenco. Come farlo tramite JSL?
Per cominciare, quanto segue non seleziona nulla nella mia tabella dati. Dove sbaglio?
dt<< select where(Contains(mylist, As column (Parameter)));
Automazione e scriptingfinestreRi: Come utilizzare Seleziona Dove () con Contiene () per trovare corrispondenze parziali nella tabella dati?Prova ad aggiungere parentesi quadre vuote dopo la parentesi di chiusura della chiamata di funzione.
dt<< select where(Contains(mylist, As column (Parameter)[]));
Ri: Come utilizzare Seleziona Dove () con Contiene () per trovare corrispondenze parziali nella tabella dati?Sono necessarie corrispondenze complete quando si utilizza contiene con un elenco. Potresti usare Word() per fare in modo che i valori della tabella dati siano nello stesso formato dell'elenco e quindi utilizzare contiene (converti anche l'elenco in un elenco di stringhe)
Names Default To Here(1);
dt = New Table("Untitled 2",
Add Rows(6),
Compress File When Saved(1),
New Column("param",
Character,
"Nominal",
Set Values(
{"Current_I20_Stage2", "Voltage_CIB_Stage3", "Capacitance_DIFF_corner_Stage1",
"Resistance_FURR__side_Stage3", "a", "b"}
)
)
);
my_list = {"Current_I20_", "Voltage_CIB_", "Capacitance_DIFF_", "Resistance_FURR_"};
rows = dt << Get Rows Where(Contains(my_list, Word([1 2], :param, "_") || "_"));
vals = dt[rows, "param"];
</CODE></P>
<P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-710241" slang="en-US" mode="NONE">Ri: Come utilizzare Seleziona Dove () con Contiene () per trovare corrispondenze parziali nella tabella dati?</LINGO-SUB><LINGO-BODY id="lingo-body-710241" slang="en-US" mode="NONE"><P>Ecco cosa faccio quando cerco corrispondenze parziali.</P>
<PRE><CODE class=" language-jsl">dt = New Table( "TestRegex", Add Rows( 8 ),
New Column( "TestCol", Character, "Nominal",
Set Values(
{"Current_I20_Stage2", "xyz", "Capacitance_DIFF_corner_Stage1", "lmnop",
"aaa", "Voltage_CIB_Stage3", "Voltage_CIB_Stage3",
"Resistance_FURR__side_Stage3"}
)
)
);
myList = {"Current_I20_", "Voltage_CIB_", "Capacitance_DIFF_", "Resistance_FURR_"};
for (i = 1, i <= nitems(mylist), i++,
match_rows = dt << get rows where(! is missing(regex(as column(dt, "TestCol"),
mylist[i], "\0", ignorecase)));
print(match_rows);
);
Ri: Come utilizzare Seleziona Dove () con Contiene () per trovare corrispondenze parziali nella tabella dati?@jthi Funziona ma non sembra rispettare le righe nascoste ed escluse nella tabella dati dt .
Voglio escludere alcune righe in base a un'altra colonna nella mia tabella dati come in JSL di seguito. Forse questo potrebbe essere fatto all'interno Ottieni righe dove () ?
Names Default To Here(1);
clear log ();
dt = New Table("Untitled 2",
Add Rows(6),
Compress File When Saved(1),
New Column("param",
Character,
"Nominal",
Set Values(
{"Current_I20_Stage2", "Voltage_CIB_Stage3", "Capacitance_DIFF_corner_Stage1",
"Resistance_FURR__side_Stage3", "a", "b"}
)
),
New Column("Group",
Character,
"Nominal",
Set Values(
{"A", "B", "C", "D", "E", "F"}
)
),
);
ToHideAndExcludeList = {"A", "D", "F"};
dt << Select Where( Contains(ToHideAndExcludeList, :Group) );
sr = dt << Invert Row Selection;
sr << Hide and Exclude;
my_list = {"Current_I20_", "Voltage_CIB_", "Capacitance_DIFF_", "Resistance_FURR_"};
rows = dt << Get Rows Where(Contains(my_list, Word([1 2], :param, "_") || "_"));
vals = dt[rows, "param"];
Ri: Come utilizzare Seleziona Dove () con Contiene () per trovare corrispondenze parziali nella tabella dati?Potresti includere lo stato della riga come un'altra condizione.
Ri: Come utilizzare Seleziona Dove () con Contiene () per trovare corrispondenze parziali nella tabella dati?@Mark_Bailey Grazie. Intendi usare Row State con Contiene? Potrei per favore avere un esempio?
Ri: Come utilizzare Seleziona Dove () con Contiene () per trovare corrispondenze parziali nella tabella dati?Questo dovrebbe funzionare.
Names Default To Here( 1 );
Clear Log();
dt = New Table( "Untitled 2",
Add Rows( 6 ),
Compress File When Saved( 1 ),
New Column( "param",
Character,
"Nominal",
Set Values( {"Current_I20_Stage2", "Voltage_CIB_Stage3", "Capacitance_DIFF_corner_Stage1", "Resistance_FURR__side_Stage3", "a", "b"} )
),
New Column( "Group", Character, "Nominal", Set Values( {"A", "B", "C", "D", "E", "F"} ) ),
);
ToHideAndExcludeList = {"A", "D", "F"};
dt << Select Where( Contains( ToHideAndExcludeList, :Group ) );
sr = dt << Invert Row Selection;
sr << Hide and Exclude;
my_list = {"Current_I20_", "Voltage_CIB_", "Capacitance_DIFF_", "Resistance_FURR_"};
exrows = dt << Get Excluded Rows;
rows = dt << Get Rows Where( All( Contains( my_list, Word( [1 2], :param, "_" ) || "_" ), Contains( exrows, Row() ) == 0 ) );
vals = dt[rows, "param"];Ri: Come utilizzare Seleziona Dove () con Contiene () per trovare corrispondenze parziali nella tabella dati?@mmarchandTSI Grazie molto. Funziona, ma avrei preferito un approccio in cui si potesse filtrare per stato della riga (as @Mark_Bailey suggerito) sotto Contiene () . Ciò eviterebbe qualsiasi manipolazione della tabella dati.
Ri: Come utilizzare Seleziona Dove () con Contiene () per trovare corrispondenze parziali nella tabella dati?Potresti usare !Excluded() e !Hidden() ma Contiene() sembra fare delle cose divertenti in questo caso, quindi devi gestirlo, All() sembra funzionare in questo caso
Names Default To Here(1);
Clear Log();
dt = New Table("Untitled 2",
Add Rows(6),
Compress File When Saved(1),
New Column("param",
Character,
"Nominal",
Set Values(
{"Current_I20_Stage2", "Voltage_CIB_Stage3", "Capacitance_DIFF_corner_Stage1",
"Resistance_FURR__side_Stage3", "a", "b"}
)
),
New Column("Group", Character, "Nominal", Set Values({"A", "B", "C", "D", "E", "F"})),
);
ToHideAndExcludeList = {"A", "D", "F"};
dt << Select Where(Contains(ToHideAndExcludeList, :Group));
sr = dt << Invert Row Selection;
sr << Hide and Exclude;
dt << Clear Select;
my_list = {"Current_I20_", "Voltage_CIB_", "Capacitance_DIFF_", "Resistance_FURR_"};
rows = dt << Get Rows Where(All(Contains(my_list, Word([1 2], :param, "_") || "_")) & !Excluded() & !Hidden());
vals = dt[rows, "param"];
Modificare:
O qualche espressione valutativa
rows = dt << Get Rows Where(Eval(EvalExpr((Contains(my_list, Expr(Word([1 2], :param, "_") || "_"))))) & !Excluded() & !Hidden());
Ri: Come utilizzare Seleziona Dove () con Contiene () per trovare corrispondenze parziali nella tabella dati?Sì, combina più condizioni con And() per abbinare le stringhe per le righe che non sono attualmente nascoste o escluse. C'è una spiegazione completa e moltissimi esempi Qui .
Ri: Come utilizzare Seleziona Dove () con Contiene () per trovare corrispondenze parziali nella tabella dati?@Mark_Bailey Fatto, non ricevo alcun errore ma non seleziona nulla nella tabella dati.