如何使用 SelectWhere() 和 Contains() 来查找数据表中的部分匹配项?我有一个清单
myParaList = {Current_I20_, Voltage_CIB_, Capacitance_DIFF_, Resistance_FURR_};以及一个名为 Parameter 的一列数据表,其中包含多行,其中一些条目为
Current_I20_Stage2
Voltage_CIB_Stage3
Capacitance_DIFF_corner_Stage1
Resistance_FURR__side_Stage3
使用我的列表和包含()将完整参数名称从数据表中提取到列表中。 如何通过 JSL 执行此操作?
首先,以下内容没有选择我的数据表中的任何内容。 我哪里错了?
dt<< select where(Contains(mylist, As column (Parameter)));
自动化和脚本编写视窗Re: 如何使用 SelectWhere() 和 Contains() 来查找数据表中的部分匹配项?尝试在函数调用的右括号后添加空方括号。
dt<< select where(Contains(mylist, As column (Parameter)[]));
Re: 如何使用 SelectWhere() 和 Contains() 来查找数据表中的部分匹配项?将 contains 与列表一起使用时,您需要完全匹配。 您可以使用 Word() 使数据表值与列表的格式相同,然后使用 contains (还将列表转换为字符串列表)
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: 如何使用 SelectWhere() 和 Contains() 来查找数据表中的部分匹配项?</LINGO-SUB><LINGO-BODY id="lingo-body-710241" slang="en-US" mode="NONE"><P>这是我在寻找部分匹配时所做的事情。</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: 如何使用 SelectWhere() 和 Contains() 来查找数据表中的部分匹配项?@jthi这有效,但似乎不支持数据表中隐藏和排除的行dt 。
我想根据数据表中的另一列排除一些行,如下面的 JSL 所示。 也许这可以在获取行位置 () ?
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: 如何使用 SelectWhere() 和 Contains() 来查找数据表中的部分匹配项?您可以将行状态作为另一个条件包括在内。
Re: 如何使用 SelectWhere() 和 Contains() 来查找数据表中的部分匹配项?@马克贝利谢谢。 您的意思是使用 Row State 和 Contains 吗? 我可以举个例子吗?
Re: 如何使用 SelectWhere() 和 Contains() 来查找数据表中的部分匹配项?这应该有效。
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: 如何使用 SelectWhere() 和 Contains() 来查找数据表中的部分匹配项?@mmarchandTSI非常感谢。 这是可行的,但我更喜欢一种可以按行状态进行过滤的方法(如@马克贝利建议)下包含() 。 这将避免任何数据表操作。
Re: 如何使用 SelectWhere() 和 Contains() 来查找数据表中的部分匹配项?您可以使用 !Excluded() 和 !Hidden() 但 Contains() 在这种情况下似乎做了一些有趣的事情,所以您必须围绕它进行管理, All() 似乎在这种情况下工作
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"];
编辑:
或者一些 eval expr
rows = dt << Get Rows Where(Eval(EvalExpr((Contains(my_list, Expr(Word([1 2], :param, "_") || "_"))))) & !Excluded() & !Hidden());
Re: 如何使用 SelectWhere() 和 Contains() 来查找数据表中的部分匹配项?是的,使用 And() 组合多个条件来匹配当前未隐藏或排除的行的字符串。 有完整的解释和大量的例子这里。
Re: 如何使用 SelectWhere() 和 Contains() 来查找数据表中的部分匹配项?@马克贝利完成后,我没有收到任何错误,但它没有选择数据表中的任何内容。