테이블 참조에 대한 질문(Russel 제공)
"에 관한 스레드에 이런 질문이 나왔습니다. Re: 2022Q1 Practical Session - Beginners" - 다른 분들도 토론에 참여해 주시길 바라서 토론 포럼에 올렸습니다.
오늘 보여드린 테이블 참조에 대한 질문: 여러 테이블을 스크립트의 일부로 순차적으로 처리하는 경우 테이블 참조를 무한히 반복합니까(dt1, dt2, dt3,...) 아니면 더 똑똑한 솔루션이 있습니까?
배경: 저는 테이블을 자주 조작하고(조인, 연결, 분할 등) 때로는 원하는 최종 테이블을 얻을 때까지 동일한 스크립트의 다음 테이블로 이동하기 전에 순차적으로 열고 처리하고 닫는 테이블이 꽤 많습니다. .
Re: 테이블 참조에 대한 질문(Russel 제공)@게오르그 감사합니다!
Re: 테이블 참조에 대한 질문(Russel 제공)안녕 @레셀 , 여기에는 SQL 생성/쓰기에 대한 정보가 포함되어 있지 않지만 SQL 쿼리 또는 다른 방법을 통해 JMP에서 쿼리를 배포하는 방법에 대한 자세한 내용이 포함되어 있습니다. 그래서 제가 평소 사용하는 방식은 다른 도구를 사용하여 일반 SQL(예: "15세 이상인 big_class에서 이름 선택")을 작성하고 해당 스크립트를 JMP에 배포하는 것입니다. 그러나 이것이 어떻게 보일 수 있는지 몇 가지 예를 보게 될 것입니다.
Re: 테이블 참조에 대한 질문(Russel 제공)안녕하세요. 예, 많은 설정이 변경되었지만 어느 설정이 정확히 기억나지는 않습니다. 내 말은, 이것이 SAS 기술 지원, 우리의 IT 지원 및 나의 손에 있다는 것입니다. 이 문제를 해결하는 데 상당한 시간이 소요되었습니다. 거의 도움이 되지 않았습니다. (그리고 저는 최근에 약간의 데이터 활용 능력을 갖추기 시작했습니다.)
또한 스크립트를 통해 데이터를 로드하고 테이블을 조작하여 데이터를 가져오는 데는 문제가 없습니다. 비록 매번 10만 개의 행을 로드하고 대부분을 삭제하고 다음 테이블에서 비슷한 단계를 반복한다는 점을 고려하면 실제로는 비효율적으로 보이지만 . 쿼리 빌더가 동일한 작업을 수행하지만 인터페이스는 다를 것이라고 생각합니다. 지금은 필요한 데이터에 접근할 수 있지만, 작업량에 따라; 일반 SQL을 JMP로 가져오는 것을 고려해 볼 수도 있습니다. (가능한지는 몰랐습니다.)
아래 링크에는 JMP와 함께/JMP에서 사용할 SQL 생성에 대한 정보가 포함되어 있습니다.
감사해요!
Re: 테이블 참조에 대한 질문(Russel 제공)그런데 아마도 이 프레젠테이션을 보고 싶을 수도 있습니다. JMP를 사용하여 데이터베이스에서 데이터를 가져오는 것에 관한 내용입니다.
https://community.jmp.com/t5/Discovery-Summit-Europe-2021/Strategies-and-Examples-for-Data-Acquisition-From-Distributed/ta-p/349225
Re: 테이블 참조에 대한 질문(Russel 제공)쿼리 작성기 기본 설정에서 설정을 변경하려고 했습니까? 이는 많이 변경될 수 있습니다. 기본적으로 각 변경(데이터베이스의 모든 수준, 미리 보기 등)에 대해 많은 데이터가 전송됩니다.
또한 GUI를 통해 쿼리를 작성한 후에는 이를 사용자 정의 SQL로 변환하여 일반 SQL을 생성할 수 있습니다. 그러면 데이터베이스에서만 처리되며 속도가 훨씬 빨라집니다.
가장 잘 알려진 방법은 항상 데이터베이스에서 무거운 작업을 수행하는 것이지만 이는 항상 환경에 따라 다릅니다. 데이터베이스에서 쿼리를 정의하고 JMP에서 사용할 수 있는 다른 도구도 있습니다(예: 데이터베이스 공급업체에 따라 SQL 쿼리 빌더).
또한 정기적으로 필요한 특정 쿼리에 대해 IT(예: 데이터베이스 관리자)에게 도움을 요청하고 일반 SQL을 JMP로 가져올 수도 있습니다.
올바른 형식으로 데이터베이스에서 데이터를 가져오는 것이 중요하며 최종적으로 전체 프로세스를 살펴보는 것이 좋습니다.
Re: 테이블 참조에 대한 질문(Russel 제공)이전에 쿼리 빌더를 사용해 본 적이 있습니다. 엄청나게 느리고 계속해서 충돌이 발생했습니다. 그래서 SAS 기술 지원팀에 문의했지만 문제를 해결하지 못했습니다. 결과적으로 나는 스크립트에서 개별 테이블을 처리하는 데 집착했습니다. 쿼리 빌더의 성능이 좋지 않은 경우; 훨씬 편리하고 효율적입니다. 이는 내가 로드하는 테이블에 약 100,000개 이상의 행이 있기 때문일 수 있습니다. 이는 적어도 기술 지원팀의 결론이었습니다. 아아, 이 "거대한" 테이블 외에는 의지할 곳이 거의 없습니다.
그리고 디버깅도 시급히 익숙해져야 할 것 같습니다. 몇 가지 유용한 코드 줄을 "논쟁"하는 동안 건축이나 미학 등은 고려하지 않습니다. 사실; 디버깅할 수 있는 스크립트를 작성하는 방법. 불행하게도 그것은 나에게 아직은 생소한 개념이다.
Re: 테이블 참조에 대한 질문(Russel 제공)데이터베이스에서 테이블 조작을 수행할 수도 있습니다(예: 쿼리 빌더 또는 기본 SQL에서 쿼리 정의). 이는 트래픽을 피하고 서버에 과도한 부하를 주기 때문에 대규모 데이터 세트에 유리합니다. 그러면 JMP에서 더 적은 수의 테이블을 처리해야 합니다.
Re: 테이블 참조에 대한 질문(Russel 제공)설명적인 핸들/참조 이름은 어느 시점에서 귀하(또는 귀하의 코드를 수정해야 하는 다른 사람)에게 도움이 될 것입니다. 또한 Show(dt_batchid_loc);를 사용할 수 있으면 디버그 인쇄가 더 쉬워집니다. 예를 들어 생성된 테이블 이름을 보려면
또한 테이블을 생성할 때 출력 테이블("테이블 이름")을 사용하는 것이 유용할 수 있습니다. 이는 코드를 디버깅해야 할 때 도움이 될 것입니다. 이렇게 하지 않으면(나는 이것을 건너뛰는 경향이 있고 때때로 나를 괴롭히게 됩니다) QC의 "제목 없는 3041 요약"과 비교했을 때 "BatchID_with_Loc"와 같은 이름으로 어떤 테이블이 열려 있는지 확인하는 것이 훨씬 쉽습니다. , Loc" 또는 뭔가.
Re: 테이블 참조에 대한 질문(Russel 제공)답장을 보내주셔서 감사합니다. 제가 작업하고 있는 배경에 대해 조금 더 설명하겠습니다.
ODBC를 통해 Google Cloud Platform 구현에서 테이블을 로드합니다. 이 표는 최신 제조 데이터로 정기적으로 업데이트됩니다. 예를 들어, 내가 로드한 첫 번째 테이블은(다음과 같이 참조합니다.) dt )에는 별도의 열에 배치 ID, 다양한 QC 매개변수에 대한 매개변수 이름, 측정 결과 및 측정 단위가 있습니다. QC 매개변수 이름으로 분할하고 출력을 다음과 같이 참조합니다. dt2 , 닫는 중 dt ). 그런 다음 예를 들어 배치 ID와 제조 위치를 상호 참조하는 다른 테이블을 로드합니다. dt3 ). 그 후에는 가입할 수 있습니다. dt2 ~와 함께 dt3 , 생성 dt4 어떤 분석을 진행하기 전에 필요하다고 생각되는 모든 정보가 포함된 테이블을 얻을 때까지 계속해서 작업합니다. 일부 스크립트에서는 10개에 가까운 테이블을 처리하고 있으며 모두 다음과 같이 참조됩니다. dt(n) . 이것이 내 현재 기술 수준이 허용하는 것입니다.
나는 이러한 스크립트를 제어 차트 작성에 사용할 중기 계획을 가지고 있습니다. 현재 저는 추세를 시각적으로 평가하고 스크린샷이나 HTML로 내보낸 차트를 다른 이해관계자들에게 보냅니다.
이 대화에서 제가 얻은 것은 보다 설명적인 테이블 참조를 사용하는 것입니다. 이것들은 또한 핸들이라고 불리는 것입니까?
Re: 테이블 참조에 대한 질문(Russel 제공)나는 동의한다 @martindemel , 파일이 존재하는 위치, 파일을 처리하는 순서 및 해당 파일로 수행하려는 작업에 따라 다릅니다. JSL에는 향상된 로그 외부에 도움이 될 수 있는 많은 기능이 내장되어 있습니다. 예를 들어, 디렉토리의 파일 디렉토리의 모든 파일 목록을 제공합니다. 파일 선택 디렉터리에서 하나 이상의 파일을 대화형으로 선택할 수 있습니다. 확장 로그가 대화형 작업을 잘 캡처하는 동안 하드 코딩된 테이블 이름 참조를 테이블에 대한 변수 참조로 바꾸고 싶을 수도 있습니다. @martindemel 다음을 사용하여 이 중 일부를 보여주었습니다. dt = 개방형(... 대부분의 경우 파일을 여는 JSL 작업은 생성된 데이터 테이블에 대한 핸들을 반환합니다. 데이터 테이블 핸들은 또한 작업이 포함된 테이블에 메시지를 보낼 때 생성됩니다. 테이블 메뉴. 예를 들어 하위 집합을 생성하는 경우 구문은 다음과 같습니다.
subsetDT = dt << Subset(...
새로 생성된 테이블에 대한 참조를 캡처할 수 있습니다. 다른 테이블 작업도 비슷한 방식으로 작동합니다.
Re: 테이블 참조에 대한 질문(Russel 제공)안녕 @레셀 ,
그것은 실제로 당신이 최종적으로 무엇을 하고 싶은지에 달려 있습니다. 동일한 방식으로 처리하고 나중에 닫으려는 100개의 데이터 테이블이 있다고 가정하면, 루프(각 테이블 열기, 처리, 닫기)가 100개의 테이블을 모두 열고 나중에 처리하는 것보다 더 나은 작업을 수행할 수 있습니다. 다른 하나. 한 가지 이유는 시스템 측에서 또 다른 문제를 일으킬 수 있는 많은 창 핸들을 만들지 않기 때문입니다.
일반적으로 테이블 변수 이름을 좀 더 자세히 설명하므로 의미가 있다면 그것이 무엇인지 더 잘 이해할 수 있습니다. "dt"는 주로 더티 해킹을 위한 것입니다 
열려 있는 모든 데이터 테이블을 가져온 다음 다음을 사용하여 반복할 수도 있습니다.
Get Data Table List();
이것은 아마도 현명한 조치일 것이다.
다른 사람들은 이것에 대해 어떻게 생각합니까?