테이블 참조에 대한 질문(러셀에서)
"에 대한 스레드에서 이 질문이 나왔습니다. Re: 2022Q1 Practical Session - Beginners" - 다른 분들도 토론에 참여했으면 해서 토론 포럼에 올렸습니다.
오늘 보여준 테이블 참조에 대한 질문: 스크립트의 일부로 여러 테이블을 순차적으로 처리하는 경우 테이블 참조를 무한대로 반복합니까(dt1, dt2, dt3,...) 아니면 더 똑똑한 솔루션이 있습니까?
배경: 저는 테이블을 자주 조작(조인, 연결, 분할 등)하고 때로는 원하는 최종 테이블이 나올 때까지 동일한 스크립트에서 다음 테이블로 이동하기 전에 순차적으로 열고 처리하고 닫는 테이블이 꽤 있습니다. .
Re: 테이블 참조에 대한 질문(Russsel에서)안녕 @리셀 ,
그것은 정말로 당신이 마침내하고 싶은 것에 달려 있습니다. 동일한 방식으로 처리하고 나중에 닫으려는 100개의 데이터 테이블이 있다고 가정해 보겠습니다. 루프(각 테이블을 열고, 처리하고, 닫음)가 100개의 테이블을 모두 연 다음 하나씩 처리하는 것보다 작업을 더 잘 수행할 수 있습니다. 다른. 한 가지 이유는 시스템 측에서 또 다른 문제를 유발할 수 있는 많은 창 핸들을 생성하지 않기 때문입니다.
일반적으로 나는 테이블 변수 이름에서 조금 더 설명적일 것이므로 그것이 의미가 있는 경우 그것이 무엇인지 더 잘 이해합니다. "dt"는 주로 더러운 해킹을위한 것입니다 
열려 있는 모든 데이터 테이블을 가져온 다음 다음을 사용하여 반복할 수도 있습니다.
Get Data Table List();
이것은 아마도 현명한 조치일 것입니다.
다른 사람들은 이에 대해 어떻게 생각합니까?
Re: 테이블 참조에 대한 질문(Russsel에서)나는 동의한다 @martindemel , 파일이 있는 위치, 파일을 처리하는 순서, 파일로 수행하려는 작업에 따라 다릅니다. JSL에는 도움이 될 수 있는 Enhanced Log 외부에 많은 내장 기능이 있습니다. 예를 들어, 디렉토리의 파일 디렉토리의 모든 파일 목록을 제공합니다. 파일 선택 디렉토리에서 하나 이상의 파일을 대화식으로 선택할 수 있습니다. Enhanced Log가 대화식 작업을 잘 캡처하는 동안 여전히 하드 코딩된 테이블 이름 참조를 테이블에 대한 변수 참조로 바꾸고 싶습니다. @martindemel 이것을 사용하여 일부를 보여주었습니다. dt = 열기(... 대부분의 경우 파일을 여는 JSL 작업은 생성된 데이터 테이블에 대한 핸들을 반환합니다. 데이터 테이블 핸들은 에서 작업으로 테이블에 메시지를 보낼 때도 생성됩니다. 테이블 메뉴. 예를 들어 구문 하위 집합을 만드는 경우
subsetDT = dt << Subset(...
새로 생성된 테이블에 대한 참조를 캡처할 수 있습니다. 다른 테이블 작업도 비슷한 방식으로 작동합니다.
Re: 테이블 참조에 대한 질문(Russsel에서)답장을 보내주셔서 감사합니다. 제가 작업한 배경에 대해 조금 더 자세히 알아보겠습니다.
ODBC를 통해 Google Cloud Platform 구현에서 테이블을 로드합니다. 이 표는 최신 제조 데이터로 정기적으로 업데이트됩니다. 예를 들어, 내가 로드하는 첫 번째 테이블(나는 그것을 dt ) 배치 ID, 다른 QC 매개변수에 대한 매개변수 이름, 측정 결과 및 측정 단위가 별도의 열에 있습니다. 나는 그것을 QC 매개변수 이름으로 분할합니다(그리고 출력을 다음과 같이 참조합니다. dt2 , 폐쇄 dt ). 그런 다음, 예를 들어 배치 ID와 제조 위치를 상호 참조하는 다른 테이블을 로드합니다. dt3 ). 그 후에 나는 합류 할 수 있습니다 dt2 ~와 함께 dt3 , 생성 dt4 분석을 진행하기 전에 필요하다고 생각하는 모든 정보가 포함된 테이블이 생길 때까지 계속해서 계속 진행합니다. 일부 스크립트에서는 모두 다음으로 참조되는 10개에 가까운 테이블을 처리하고 있습니다. dt(n) . 이것은 나의 현재 기술 수준이 허용하는 것입니다.
제어 차트 작성에 이러한 스크립트를 사용할 중기 계획이 있습니다. 현재 나는 추세를 시각적으로 평가하고 스크린샷이나 html로 내보낸 차트를 다른 이해 관계자에게 보냅니다.
이 대화에서 내가 취한 것은 더 설명적인 테이블 참조를 사용하는 것입니다. 이것들은 또한 핸들이라고 하는 것입니까?
Re: 테이블 참조에 대한 질문(Russsel에서)설명적인 핸들/참조 이름은 어느 시점에서 귀하(또는 귀하의 코드를 수정해야 하는 다른 사람)를 도울 것입니다. 또한 Show(dt_batchid_loc)를 사용할 수 있을 때 디버그 인쇄를 더 쉽게 만듭니다. 예를 들어 생성된 테이블 이름을 확인합니다.
또한 테이블을 생성할 때 Output table("name of table")을 사용하는 것이 유용할 수 있습니다. 이것은 코드를 디버그해야 할 때 도움이 될 것입니다. 이 작업을 수행하지 않으면(저는 이것을 건너뛰는 경향이 있고 때때로 저를 괴롭힙니다) "QC의 제목 없는 3041 요약"과 비교할 때 "BatchID_with_Loc"과 같은 이름에서 어떤 테이블이 열려 있는지 확인하는 것이 훨씬 쉽습니다. , Loc" 또는 뭔가.
Re: 테이블 참조에 대한 질문(Russsel에서)데이터베이스에서 테이블 조작을 수행할 가능성도 있습니다(예: 쿼리 빌더 또는 기본 SQL에서 쿼리 정의). 이는 트래픽을 피하고 서버에 과부하를 주기 때문에 대용량 데이터 세트에 유리합니다. 그런 다음 JMP에서 더 적은 테이블을 처리해야 합니다.
Re: 테이블 참조에 대한 질문(Russsel에서)이전에 쿼리 빌더를 사용해 보았습니다. 엄청나게 느리고 계속 충돌했습니다. 그래서 SAS 기술 지원에 문의했지만 문제를 해결할 수 없었습니다. 결과적으로 스크립트에서 개별 테이블을 처리하는 데 매달렸습니다. 쿼리 빌더의 열악한 성능을 감안할 때; 훨씬 더 편리하고 효율적입니다. 이것은 내가 로드하는 테이블에 100,000개 이상의 행이 있기 때문일 수 있습니다. 이는 최소한 기술 지원의 결론이었습니다. 아아, 나는 실질적으로 이 "대규모" 테이블 외에는 의지할 곳이 없습니다.
그리고 시급하게 디버깅에 익숙해져야 한다고 생각합니다. 몇 줄의 유용한 코드를 "싸움"할 수는 있지만 아키텍처, 미학 또는; 사실대로; 디버깅할 수 있는 스크립트를 빌드하는 방법. 불행히도 그것은 아직 나에게 낯선 개념입니다.