在具有列表检查列的表上使用连接/追加的错误<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />// 此代码显示了该错误。连接附加到第一个表会导致数据损坏。
dtA = 新表(“A”);
dtB = 新表(“B”);
dtA << 添加行(3);
dtB << 添加行(1);
colA = 列(dtA, 1);
colB = 列(dtB, 1);
colA[1]=“A”;
colA[2]="A";
colA[3]="C";
colB[1]=“B”;
dtA << 压缩选定的列(dtA << 获取列名());
// 该数据没有List Check,但没有损坏
(dtA << 连接(dtB)) << 设置名称("未损坏");
// 该数据已损坏
dtA << 连接(dtB,附加到第一个表(1)) << 设置名称(“损坏”);
回复:在具有列表检查列的表上使用连接/追加的错误好的,感谢 Martin 提供了如何让开发团队注意到这一点的建议......
- 鲍勃
回复:在具有列表检查列的表上使用连接/追加的错误嗨鲍勃,
很抱歉回复晚了,当时正在路上拜访客户。
我理解你的观点。 与此同时,我认为几乎没有什么办法可以防止这种情况发生。 我将尝试解释原因。 通过压缩,您可以使用压缩时列内的值启动列表检查。 假设没有压缩,并且您自己创建了一个列表检查。 列表检查的目的是只允许这些值出现在该列中。 其他人说你不想拥有除这些之外的其他价值观。
无论您是否通过列表检查将其他表连接到原始表,或者只是在该表中输入新的观察结果,它都只会允许这些值,因为它认为您已经按目的设置了这些规则,并且我不希望软件对我的工作不利制定规则。
也就是说,如果必须允许输入其他值,则规则制定者负责更改规则。
也就是说,我确信您之前已经理解了上述内容,这是预期的行为,尽管不完全是您喜欢的。
我建议您写信给我们的技术支持( support@jmp.com )添加增强请求以添加问题对话框,以防使用“附加到原始表”标志将列表检查(或压缩)数据表与新表连接起来。 该对话框可以说明某事。像这样:“原始表中有一个活动列表检查。 您要连接的表中有未列出的值,这些值在连接后将转换为缺失值。您仍要连接吗? (如果不是,您必须首先更改列表检查属性)” - 或更短的内容
要解决此问题,您有两种选择:首先创建一个新表,然后对其进行压缩(您可能希望在压缩完成之前使数据表“不可见”)。 或者第二个提前更改或删除列表检查属性。
希望有帮助,
马丁
回复:在具有列表检查列的表上使用连接/追加的错误抱歉,我并不是想争论“腐败”这个词,也不是想否认你认为的错误。
我试图解释你得到了什么。 如果您从列中删除列表检查属性,则追加将按您的预期工作。
列表检查属性似乎引起了混乱。
根据定义,列表检查属性表示只有列表检查表中的值才有效。
如果您向列添加值或将其更改为不在列表检查表中的值,则会将其设置为缺失。
回复:在具有列表检查列的表上使用连接/追加的错误我真的不明白争论“腐败”一词的语义的意义。生成的数据表是否是两个原始数据表的有效串联?显然不是。尽管正确使用了 JMP 功能,但记录已被更改。事实上,“连接而不附加到第一个表”给出的结果与“连接并附加到第一个表”给出的结果不同(正确),这一事实应该引起您的关注。事实上,客户告诉您存在错误,您也应该担心......
谢谢,
- 鲍勃
回复:在具有列表检查列的表上使用连接/追加的错误正如马丁所说,数据表并没有被“损坏”。
我假设您的意思是生成的数据表不是您所期望的。 您期望“B”是第 4 行的数据。
如果查看生成的列表检查属性,会发现有 2 个值:“A”和“C”。
根据定义,只有“A”和“C”是该列的有效数据。
由于“B”不是有效值,因此它被映射为缺失。
compress 根据目前已知的信息生成列表检查表。
也许Concat应该更聪明,并扩展列表检查表。
或者,如果并非所有要连接的列都具有相同的列表检查属性,则完全删除列表检查属性。
回复:在具有列表检查列的表上使用连接/追加的错误马丁,
感谢您查看此内容。那个缺失的“B”是数据损坏。JMP 引入了一个在串联之前不存在的值(空字符串),并删除了一个在串联之前存在的值(“B”)。因此该表不是两个原始表的有效串联。如果这是一个关键业务应用程序,JMP 就会注入错误,对吧?
我了解这是如何发生的,但 JMP 应重新评估列表检查中的必要项目,以确保串联数据集不会删除/更改任何数据。
谢谢,
- 鲍勃
回复:在具有列表检查列的表上使用连接/追加的错误嗨罗伯特,
我尝试了你的脚本,没有看到数据损坏。 我只是看到 dtA 中有第四行,由于列表检查而没有条目。 如果您使用菜单“数据表”->“连接”,然后选择表 A 和 B,并选中“附加到第一个表”复选框并选中“数据源列”选项,您将看到表 B 中有数据,但未输入,因为列表检查是由于压缩而引入的。

如果这不是您的意思,因为我现在没有损坏的数据集(并且我会理解损坏不再可读),请帮助我理解您的问题。 如果您确实收到损坏的数据表,无法再打开,请将您的问题发送给我们的技术支持,以便我们的开发跟踪它,他们希望可以帮助您找到原因(支持@jmp.com )。
顺便提一句。 我使用过 JMP 12.1。
问候,
马丁