在具有列表檢查列的表上使用連接/追加的錯誤<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。
問候,
馬丁