<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
안녕하세요,
이 문제는 정말 저를 당혹스럽게 합니다.
연결을 만들고 싶지만 한 테이블(dt2)에서 첫 번째 항목(dt1)에 이미 있는 항목도 있습니다. 첫 번째 데이터 테이블(dt1)에 있는 항목을 유지하고 두 번째 데이터 테이블(dt2)에서 삭제하고 싶습니다.
나는 이미 시도했고 연결하기 전에 두 번째 테이블에서 중복 항목을 삭제하고 선택 위치를 사용하여 또 다른 문제가 있습니다. 모든 중복 목록이 있지만 select where 절이나 데이터 필터에서 목록을 변수로 사용할 수 없습니다.
Summarize( a = by(column(dt, "band")),c=count );
변수는 다음과 같습니다.
= {"2_12_000264_0_9", "2_12_000265_0_1", "2_12_000267_0_3", "2_12_000269_1_3", "2_12_000269_2_1", "2_12_000270_1_7", "2_12_000270_2_1", "2_12_000270_2_5 1", "2_12_000272_1_9", "2_12_000272_2_7", "2_12_000273_1_1", "2_12_000273_2_8" , "2_12_000274_0_4", "2_12_000275_1_3", "2_12_000275_2_1", "2_12_000276_1_4", "2_12_000276_2_2"};
전체 데이터 필터:
dt2 << Data Filter( Add Filter( columns( :Bandname ), Where( :Bandname == {"2_12_000264_0_9", "2_12_000265_0_1", "2_12_000267_0_3", "2_12_000269_1_3", "2_12_000269_2_1", "2_12_000270_1_7", "2_12_000270_2_5", "2_12_000271_0_1", "2_12_000272_1_9", "2_12_000272_2_7", "2_12_000273_1_1", "2_12_000273_2_8", "2_12_000274_0_4", "2_12_000275_1_3", "2_12_000275_2_1", "2_12_000276_1_4", "2_12_000276_2_2"}), Display( :Bandname, Size( 221, 259 ), List Display ), Mode( Show( 1 ) ) ));
그러나 변수를 사용하면 작동하지 않습니다.
Add Filter( columns( :Bandname ), Where( :Bandname == a ), Display( :Bandname, Size( 221, 259 ), List Display ), Mode( Show( 1 ) ) ));
왜??
그러나 주요 문제는 연결하기 전에 중복을 삭제하는 위의 문제입니다.
미리 감사드립니다
정말 감사합니다. 잘 작동합니다... 첫 번째 코드는 jsl을 이해하는 데 정말 좋습니다.
이유는 모르겠지만 경우에 따라 JSL은 일반 텍스트 목록이 완벽하게 평가되는 경우에도 목록 변수를 확인하지 않습니다.
이 문제를 해결하는 한 가지 방법은 식을 사용하고 평가 전에 구문 분석된 목록을 식으로 대체하는 것입니다. 다음은 데이터 필터 예입니다.
dt = 열려 있는 ( "$ENGLISH_SAMPLE_DATA/빅 클래스.jmp" ) ;
ㅏ = { "케이티" , "헨리" , "로버트" } ;
df_expr = 만료 ( dt << 데이터 필터 ( 필터 추가 ( 열 ( : 이름 ) , 어디 ( : 이름 == ㅏ ) , 표시하다 ( : 이름 , 목록 표시 ) ) ) ) ;
대체하다 ( df_expr , 만료 ( ㅏ ) , 구문 분석 ( 숯 ( 평가 ( ㅏ ) ) ) ) ;
평가 ( df_expr ) ;
그러나 목록을 기반으로 행을 조건부로 선택하는 것은 For Each Row()를 사용하여 보다 효율적으로 스크립팅할 수 있습니다. 아래 코드의 결과는 위와 동일해야 합니다(데이터 필터 창 제외).
dt = 열려 있는 ( "$ENGLISH_SAMPLE_DATA/빅 클래스.jmp" ) ;
ㅏ = { "케이티" , "헨리" , "로버트" } ;
각 행에 대해 ( 행 상태 ( 열 () ) = 선택된 상태 ( 포함 ( ㅏ , : 이름 [] ) ) )
중복 행이 선택되면 실행하십시오. dt << 행 삭제 연결하기 전에.