<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕하십니까,
문자열로 정의된 일치하는 열 기준을 사용하여 한 데이터 테이블을 다른 테이블의 열로 업데이트하려고 합니다.
아래 예에서 dt1은 내 기본 테이블이고 dt2는 추가할 열(예: "ROUTE")을 포함하는 일종의 구성 파일이며 다른 모든 열은 dt1과 일치하는 데 사용됩니다. dt2는 사용자 정의이므로 이러한 다른 열 이름을 미리 알 수 없으므로 형식이 지정된 문자열을 사용해야 합니다.
// 열 일치를 위한 문자열 정의
textinp = "";
matchCol = dt2 << 열 이름 가져오기 (끈);
// dt2 열 이름 목록에서 "ROUTE" 제거
(나는 = 니트템 (matchCols), i > 0, i--,
만약에 ( 포함 (matchCols , "노선" ), 에서 제거 (matchCols, i));
);
// 컬럼 매칭을 위한 스트링 생성
~을 위한 (i=1, i<= 니트템 (matchCols), i++,
텍스트 입력 = 연결 (문자열, ":" ,matchCols , " = : " ,matchCols , ", " );
);
텍스트 입력 = 왼쪽 (문자열, 길이 (textinp)-2);
인쇄 (문자열);
// dt1 업데이트
dt1 << 업데이트 (
(dt2)와 함께,
일치 열(
분석하다 (문자열)
)
);
textinp를 update 명령으로 구문 분석하면 다음 오류가 생성됩니다(문자열은 첫 번째 줄에 표시된 대로 올바르게 생성됨).
":X = :X, :Y = :Y"
예기치 않은 ",". 아마도 누락된 ";" 또는 ",".
1행 8열: :X = :X►, :Y = :Y
내가 아는 한 match columns() 내에서 여러 열을 쉼표로 구분하는 데 문제가 없어야 하며 실제로 문자 그대로 정의하려고 할 때 다음과 같습니다.
// dt1 업데이트
dt1 << 업데이트 (
(dt2)와 함께,
일치 열(
:X = :X, :Y = :Y
)
);
그것은 완벽하게 잘 작동합니다. 왜 문자열을 처리/분석할 수 없는지 아십니까? 귀하의 도움에 감사드립니다!
둘 다 감사합니다! 작동하는 두 번째 답변만 시도했습니다!
열 일치() 분명히 일치하는 인수로 두 개의 열 이름 목록(문자열이 아님)을 허용합니다.
이 시도:
// 예제 테이블
dt2 = 열려 있는 ( "$SAMPLE_DATA/빅 클래스.jmp" ) ;
dt1 = dt2 << 부분집합 ( 선택한 열 ( 0 ) , 샘플링 속도 ( 0.5 )) ;
dt1 << 열 삭제 ( 이름 ) ;
// 컬럼 매칭을 위한 리스트 정의
matchCol = dt2 << 열 이름 가져오기 () ;
제거 위치 ( matchCol , 포함 ( matchCol , 특급 ( 이름 ))) ;
// dt1 업데이트
dt1 << 업데이트 ( 와 함께 ( dt2 ) , 열 일치 ( matchCol = matchCol )) ;
이것은 작동해야 합니다:
update_expr = 에블린서트 (
"dt1 << 업데이트(
(dt2)와 함께,
열 일치(^textinp^)
)" ) ;
평가 ( 분석하다 ( update_expr )) ;