数据过滤器 - 当 where 不等于语句 (=!) 没有替代值时选择全部寻求一些帮助来理解行为或更好的脚本编写方法。
编写脚本来捕获数据中的异常。 当版本为 GP 但处于活动状态时不是X。
Names Default To Here( 1 );
dt = Current Data Table();
df = dt << Data Filter(
Location( {138, 181} ),
Add Filter(
columns( :Active, :Version ),
Where( :Active != "X" ),
Where( :Version == "GP" )
)
);然后,脚本的其余部分对该数据进行子集化,并根据该子集创建一个表格。
我遇到的问题是当所有行都有 Active == X 时。过滤器正在选择所有行。我想那是因为它没有找到空白(不缺失)的 X 的替代品。处理这个问题的最佳方法是什么?
上述代码的结果:

回复:数据过滤器 - 当 where 不等于语句 (=!) 没有替代值时选择全部快速注释。我使用你的建议来帮助进行一项分析。 继续下一步。这就是编码与屏幕截图不匹配的原因。
回复:数据过滤器 - 当 where 不等于语句 (=!) 没有替代值时选择全部这非常有帮助。 谢谢。
我最终做了类似以下的事情。
脚本问题,有更好的方法吗?就像我需要 CLE_TL 中间体吗?或者它可以只是 dt << select where << 子集在一行上?创建 CLE_TL 对象有好处吗?
names default to here(1);
dt = current data table();
shipPlant = "CLE";
shipMode = "truckloads";
subsetTable = "CLE_truckloads";
//filter
CLE_TL = dt << select where(:TransportPlanningPt == shipPlant & :MODE == shipMode);
//subset
CLE_TL << Subset(
Output Table( subsetTable ),
Selected Rows( 1 ),
Selected columns only( 0 )
);
回复:数据过滤器 - 当 where 不等于语句 (=!) 没有替代值时选择全部好的,它实际上使您的脚本编写变得更容易。 不涉及烦人的人际互动!
数据表消息<< 选择Where(布尔表达式)将为您做这一切。 布尔表达式可以很简单(例如:年龄 == 12 )或复杂(例如, :年龄 == 12 & :性别 == “F” )。 任何返回可被解释为布尔值的结果(即 0 为假,非 0 为真)的函数都可以工作。 此要求意味着您可以使用查询功能,例如包含(源列,“目标”)对于文字目标或正则表达式(源列,正则表达式)对于图案。
选择所需的行后,然后发送<< 子集()消息来提取数据。
回复:数据过滤器 - 当 where 不等于语句 (=!) 没有替代值时选择全部无需用户交互。只是新手在手动完成每个步骤后窃取代码,然后根据这些步骤构建代码。我认为有更好的方法来选择子集并创建子集表?
回复:数据过滤器 - 当 where 不等于语句 (=!) 没有替代值时选择全部只是检查:为什么要使用数据过滤对象? 用户是否必须为了脚本而进行交互?
回复:数据过滤器 - 当 where 不等于语句 (=!) 没有替代值时选择全部您可以先检查是否满足条件:
target rows = Current Data Table() << Get Rows Where( :Active != "X" );
If( N Row( target Rows ),
...
);