如何使用公式为双数据创建指标列我想通过应用以下JSL代码为双数据创建公式指示器列:
dt << Clear Column Selection();
dt << Select Duplicate Rows();
dt << Name Selection in Column( Selected( 1 ), Unselected( 0 ) );
dt << Clear Select();
尽管我得到了正确的结果,但代码会产生很多错误消息。如果可以改进代码那将是很好的。
Re:如何使用公式为双数据创建指标列我希望有一个社区成员可以比我下面使用的方法更好地解决您的问题。 根据您的需要,在尝试使用数据表的选择功能时存在冲突问题,但是您希望清除选择。 这将迫使重新计算公式。 所以我所做的是让公式创建数据表的子集,对子集化数据表执行计算(隔离选择),然后将子集中的结果读回原始数据表....然后删除子集化数据表。 看一看,看看你是否理解我在做什么。 它似乎工作。
If( Row() == 1,
dt = Current Data Table();
dt << Select Columns( :Column 1, :Column 2 );
dt2 = dt << subset(
private,
dt,
selected rows( 0 ),
selected columns( 1 )
);
dt2 << Select Duplicate Rows();
dt2 << Name Selection in Column(
Column Name( "MultipleData" ),
Selected( 1 ),
Unselected( 0 )
);
);
x = dt2:MultipleData[Row()];
If( Row() == N Rows( dt ),
dt << clear column selection;
Close( dt2, nosave );
);
x;
Re:如何使用公式为双数据创建指标列吉姆,嗨,
感谢您的支持。我试图简化我的主题。我的目标是创建一个用于处理多个数据的列。我能够使用以下JSL执行此操作:
Names Default To Here( 1 );
dt = Current Data Table();
dt << Select Columns( :Column 1, :Column 2);
dt << Select Duplicate Rows();
dt << Name Selection in Column(
Column Name( "MultipleData" ),
Selected( 1 ),
Unselected( 0 ));
dt << Clear Select();
对于附加文件的第1列和第2列的多个数据。这很好用。 但是,因为工作文件经常通过SQL使用新数据更新,所以我更愿意创建公式列“MultipleData”。
不幸的是,如果您的最后一个代码被应用,我只会得到零。什么可以解决方案?
Re:如何使用公式为双数据创建指标列好的......我以前的评论是基于这样的假设:代码是在开放代码中运行的,而不是作为公式运行的。 使用它作为公式,有一些问题。
- 如果要引用数据表,则必须在公式中定义指向数据表的指针dt。
- 您正在使用在执行时自动移动所有行的函数。 公式还循环遍历数据表中的所有行,并为每一行执行一次公式。 因此,以您的方式使用代码意味着您反复运行“选择重复行”,在实际操作中,您只需要执行一次。
- 你公司第一行的红线实际上是一个警告,而不是一个错误。
下面是我将使用的代码版本,如果将其用作公式。
If( Row() == 1,
dt = Current Data Table();
dt << Clear Column Selection();
dt << Select Duplicate Rows();
dt << Name Selection in Column( Selected( 1 ), Unselected( 0 ) );
dt << Clear Select();
);
我不清楚你为什么要把它放到公式列中,因为你放入它的列将包含所有缺失的值......所以你可能想重新考虑你的过程。
Re:如何使用公式为双数据创建指标列第一
在公式编辑器中,第一个代码行标有红线。
第二
如果正在应用公式,将出现一个弹出窗口,其中包含“发送预期可编写脚本的对象...;发送,dt << / * ### * /”或“Selection()/ * ### *”等消息/”
Re:如何使用公式为双数据创建指标列你的代码看起来不错......你得到的错误是什么?
Re:如何使用公式为双数据创建指标列吉姆,嗨,
谢谢你的解决方案。我在一个大型数据库(大约100k行和100列)上使用公式列测试了您的代码。它工作正常。
我的解决方案是以下JSL代码:
Names Default To Here( 1 );
dt = Current Data Table();
//Delete preveious version of the indicator column
dt << Delete Columns("MultipleData");
wait(2);
//Create the new version of the indicator column
dt << Select Columns( :Column 1, :Column 2);
dt << Select Duplicate Rows();
dt << Name Selection in Column(
Column Name( "MultipleData" ),
Selected( 1 ),
Unselected( 0 ));
dt << Clear Select();
dt << Clear Column Selection();正如我之前提到的,公式解决方案与您的代码一样,是首选。在更新数据集的情况下更方便。