¿Cómo utilizar Select Where () con Contiene () para encontrar coincidencias parciales en la tabla de datos?tengo una lista
myParaList = {Current_I20_, Voltage_CIB_, Capacitance_DIFF_, Resistance_FURR_};y una tabla de datos con una columna llamada Parámetro con varias filas, algunas de las cuales tienen entradas como
Current_I20_Stage2
Voltage_CIB_Stage3
Capacitance_DIFF_corner_Stage1
Resistance_FURR__side_Stage3
Usando mi lista con Contiene() para extraer los nombres completos de los parámetros de la tabla de datos en una lista. ¿Cómo hacer esto a través de JSL?
Para empezar, lo siguiente no selecciona nada en mi tabla de datos. ¿Dónde me equivoco?
dt<< select where(Contains(mylist, As column (Parameter)));
Automatización y secuencias de comandosventanasRe: ¿Cómo utilizar Select Where () con Contiene () para encontrar coincidencias parciales en la tabla de datos?Intente agregar corchetes vacíos después del paréntesis de cierre de su llamada de función.
dt<< select where(Contains(mylist, As column (Parameter)[]));
Re: ¿Cómo utilizar Select Where () con Contiene () para encontrar coincidencias parciales en la tabla de datos?Necesita coincidencias completas cuando usa contiene con una lista. Puede usar Word() para hacer que los valores de su tabla de datos tengan el mismo formato que su lista y luego usar contiene (también convierta la lista en una lista de cadenas)
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">Re: ¿Cómo utilizar Select Where () con Contiene () para encontrar coincidencias parciales en la tabla de datos?</LINGO-SUB><LINGO-BODY id="lingo-body-710241" slang="en-US" mode="NONE"><P>Esto es lo que hago cuando busco coincidencias parciales.</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);
);
Re: ¿Cómo utilizar Select Where () con Contiene () para encontrar coincidencias parciales en la tabla de datos?@jthi Esto funciona pero no parece respetar las filas ocultas y excluidas en la tabla de datos. dt .
Quiero excluir algunas filas en función de otra columna en mi tabla de datos como en JSL a continuación. Quizás esto podría hacerse dentro Obtener filas donde () ?
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"];
Re: ¿Cómo utilizar Select Where () con Contiene () para encontrar coincidencias parciales en la tabla de datos?Podría incluir el estado de la fila como otra condición.
Re: ¿Cómo utilizar Select Where () con Contiene () para encontrar coincidencias parciales en la tabla de datos?@Mark_Bailey Gracias. ¿Te refieres a usar el estado de la fila con contiene? ¿Podría darme un ejemplo?
Re: ¿Cómo utilizar Select Where () con Contiene () para encontrar coincidencias parciales en la tabla de datos?Esto debería funcionar.
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"];Re: ¿Cómo utilizar Select Where () con Contiene () para encontrar coincidencias parciales en la tabla de datos?@mmarchandTSI Muchas gracias. Esto funciona, pero hubiera preferido un enfoque en el que se pudiera filtrar por estado de fila (como @Mark_Bailey sugerido) bajo Contiene () . Esto evitaría cualquier manipulación de la tabla de datos.
Re: ¿Cómo utilizar Select Where () con Contiene () para encontrar coincidencias parciales en la tabla de datos?Podrías usar !Excluded() y !Hidden() pero Contiene() parece estar haciendo algunas cosas divertidas en este caso, así que tienes que gestionarlo, All() parece funcionar en este 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"];
Editar:
O alguna expresión de evaluación
rows = dt << Get Rows Where(Eval(EvalExpr((Contains(my_list, Expr(Word([1 2], :param, "_") || "_"))))) & !Excluded() & !Hidden());
Re: ¿Cómo utilizar Select Where () con Contiene () para encontrar coincidencias parciales en la tabla de datos?Sí, combine varias condiciones con And() para hacer coincidir cadenas de filas que actualmente no están ocultas o excluidas. Hay una explicación completa y muchos ejemplos. aquí .
Re: ¿Cómo utilizar Select Where () con Contiene () para encontrar coincidencias parciales en la tabla de datos?@Mark_Bailey Listo, no me sale ningún error pero no selecciona nada en la tabla de datos.