<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />에릭 힐( 에릭힐 ), JMP 수석 시스템 개발자, SAS
참고: 이것은 단지 논문의 텍스트일 뿐입니다. 스크린샷은 포함되지 않습니다.다음을 참조하세요. 첨부된 버전 모든 것을 얻으려면 종이를 사용하세요.

쿼리 빌더
SQL 데이터를 JMP로 가져오기 위한 새로운 JMP 12 도구
(JMP 12.1에 맞게 업데이트됨)
작성자: Eric Hill, JMP 소프트웨어 개발자
내용물
- 소개 . 2
섹션 1: 연결하기 . 삼
섹션 2: 쿼리할 테이블 선택 . 6
섹션 3: 쿼리 작성 . 11
열 추가 . 13
쿼리 저장 . 15
쿼리 실행 . 15
질문에 답하기 . 16
- 필터링 . 19
프롬프트 필터 . 23
- 견본 추출 . 25
자신만의 SQL 작성 . 26
섹션 4: 백그라운드 쿼리 관리 . 27
쿼리 상태 패널 28
Runninq 쿼리 창 .. 28
섹션 5: 쿼리 공유 . 28
섹션 6: JSL(JMP 스크립팅 언어)에서 쿼리 실행 . 29
JMP 12.1의 새로운 기능은 무엇입니까? . 31
- 찾다 . 31
관련 테이블 추가 . 32
템플릿으로 열기 . 34
계산된 열 수식 편집 . 34
버그 수정 . 35
- 결론 . 35
소개
JMP에서는 다양한 분석 도구를 간편하게 사용할 수 있지만 분석에 필요한 데이터를 필요한 방식으로 JMP로 가져올 수 없다면 이러한 도구는 아무 소용이 없습니다.JMP는 꽤 오랫동안 다음을 통해 관계형 데이터베이스의 데이터를 JMP로 가져오는 기능을 지원해 왔습니다. 파일 > 데이터베이스 > 테이블 열기 . 오픈 테이블 지금까지는 괜찮지만 몇 가지 주목할만한 제한 사항이 있습니다.
- 관계형 데이터베이스의 대부분의 데이터는 정규화된 방식으로 저장되므로 필요한 모든 데이터를 얻으려면 조인이 필요하지만 오픈 테이블 조인에 도움이 되지 않습니다. SQL을 직접 작성해야 합니다.
- 하는 동안 오픈 테이블 제공합니다 수식 편집기 예를 들어 WHERE 절을 작성하는 경우 필터링에 도움이 되는 범주형 변수의 고유 값을 표시하지 않습니다.
- 귀하의 쿼리를 다른 사람과 안전하게 공유하는 것은 어려울 수 있습니다. 오픈 테이블 생성된 JSL 스크립트의 연결 문자열에 비밀번호를 저장합니다.
- 오픈 테이블 데이터 정리, 모델링 유형, 서식 지정 등 데이터를 가져온 후 필요한 후처리 단계에는 도움이 되지 않습니다.
쿼리 빌더 처음부터 한계를 해결하기 위해 설계되었습니다. 오픈 테이블 , 동료와 안전하게 공유할 수 있는 프롬프트된 대화형 필터링을 통해 다중 테이블 쿼리를 작성하는 데 도움이 됩니다.
이 문서에서는 쿼리 빌더 자유롭게 이용 가능한 포스트그레SQL 호출된 샘플 데이터베이스 델스토어2 . 포스트그레SQL 다음에서 무료로 다운로드할 수 있는 오픈 소스 데이터베이스입니다.
http://www.postgresql.org/download/
그만큼 델스토어2 샘플 데이터베이스는 여기에서 찾을 수 있습니다:
http://wiki.postgresql.org/wiki/Sample_Databases
그만큼 델스토어2 샘플 데이터베이스는 다른 데이터베이스 플랫폼(MySQL, Oracle 및 SQL Server)에서도 사용할 수 있습니다.
섹션 1: 연결하기
시작하다 쿼리 빌더 사용하여 파일 > 데이터베이스 > 쿼리 빌더 메뉴에서:
첫 번째 페이지에서 실행할 수도 있습니다. JMP 스타터 :
마지막으로 Windows에서는 다음을 찾을 수도 있습니다. 쿼리 빌더 도구 홈 창 도구 모음:
출시 후 쿼리 빌더 , 당신은 다음과 같은 인사를 받게 될 것입니다 데이터베이스 연결 선택 대화 상자:
그만큼 데이터베이스 연결 선택 대화 상자는 오픈 테이블 창문.쿼리 빌더 그리고 오픈 테이블 동일한 ODBC 연결을 사용하고 실제로 연결을 공유하므로 어느 한 곳에서 만든 모든 연결이 두 곳 모두에 표시됩니다.
딸깍 하는 소리 새로운 연결… 기존 DSN을 사용하여 데이터베이스에 연결하거나 새 DSN을 생성합니다.필요한 자격 증명을 제공하라는 메시지가 표시됩니다.
연결 후 JMP는 연결에서 스키마를 검색하여 이것이 원하는 연결인지 확인하는 데 도움을 줍니다.
선택한 스키마에서 사용 가능한 테이블을 볼 수도 있습니다. 딸깍 하는 소리 다음 다음 단계로 계속 진행하세요.
JMP 12.2의 새로운 기능: 두 가지를 주목하세요 찾다 상자에 스키마 – 테이블 패널.이는 JMP 12.1 업데이트의 새로운 기능이며, 스키마 그리고 테이블 기울기.많은 분들이 특정 스키마에 수백 개의 스키마와 수백 개의 테이블을 가지고 있다는 것을 알고 있으므로 새로운 찾다 상자를 사용하면 목록 범위를 좁혀 원하는 것을 찾을 수 있습니다.
섹션 2: 쿼리할 테이블 선택
그림 1: 쿼리를 위한 테이블 선택
클릭하면 다음 , 테이블 선택 대화 상자가 나타납니다.에서 테이블 선택 대화 상자에서 쿼리에 포함할 테이블을 선택합니다(참조: 그림 1 위에).다음에서 테이블을 선택하세요. 사용 가능한 테이블 쿼리에 포함할 목록을 선택하고 주요한 그리고 중고등 학년 오른쪽 상단에 테이블 목록이 표시됩니다.
- 그만큼 주요한 쿼리의 테이블은 일반적으로 다른 테이블에 일치하는 값이 있는지 여부에 관계없이 모든 행을 검색해야 하는 테이블입니다.이건 너의 사실 테이블 , 데이터 웨어하우징 측면에서.쿼리에는 기본 테이블이 하나만 있을 수 있습니다.
- 중고등 학년 테이블은 일반적으로 조회 테이블입니다.기본적으로 보조 테이블의 행은 주요한 테이블이 지정된 열의 값과 일치합니다. 중고등 학년 테이블.이것들은 당신의 차원 테이블 , 데이터 웨어하우징 측면에서.원하는 만큼 추가할 수 있습니다. 중고등 학년 원하는 대로 쿼리에 테이블을 추가하세요.
오른쪽 하단 패널에는 선택한 테이블에 대한 정보가 표시됩니다.그만큼 열 탭에는 일종의 키인지 여부를 포함하여 테이블의 각 열에 대한 정보가 표시됩니다.
JMP 12.2의 새로운 기능: 참고하세요 검색 창 에서 사용 가능한 테이블 패널은 JMP 12.1의 새로운 기능입니다. 스키마에 많은 테이블이 포함되어 있는 경우 이를 사용하여 찾고 있는 테이블을 찾을 수 있습니다.
그만큼 테이블 스냅샷 패널에는 데이터의 스냅샷이 표시되므로 테이블에 필요한 정보가 있는지 확인할 수 있습니다.
일반적으로 쿼리를 작성할 때 답변하려는 질문을 염두에 두고 이러한 질문을 통해 쿼리에 포함해야 할 테이블이 결정됩니다.우리가 탐색 중인 데이터는 가상의 DVD 대여 회사에서 가져온 것입니다.제가 답변하고 싶은 질문은 다음과 같습니다.
- 어떤 영화 장르가 가장 많은 수익을 창출하고 있나요?
- 어떤 배우가 가장 많은 수익을 창출하고 있나요?
그만큼 임대 테이블에는 이 회사의 수명 동안 각 DVD 대여 이벤트에 대한 기록이 있으므로 이 쿼리의 기본 테이블이 됩니다.나는에서 볼 수있다 열 그 패널 임대 에 대한 외래 키 관계가 있는 열이 있습니다. 목록 그리고 고객 테이블:
그림 2: 외래 키
ㅏ 외래 키 관계(외래 키라고도 함) 강제 )는 한 테이블의 열에 있는 값을 다음 테이블에서 찾아야 함을 의미합니다. 기본 키 열 또 다른 테이블.에서 그림 2 , 우리는 Inventory_id 의 열 임대 테이블이 기본 키 의 열 목록 테이블, 값 고객 ID 의 열 임대 테이블이 기본 키 의 열 고객 테이블과 값 직원_ID Rentals 테이블의 열은 기본 키 의 열 직원 테이블.이번 쿼리에는 대여에 관여한 직원의 고객이 아닌 대여한 영화에 대한 자세한 정보를 찾고 있으므로 다음을 추가하겠습니다. 목록 테이블을 쿼리에 보조 테이블로 추가합니다.
을 보면서 열 패널 목록 테이블을 보면 더 자세히 알 수 있어요 외래 키 와의 관계 영화 테이블:
그림 3: 인벤토리 테이블 세부정보
그래서 영화 테이블도 쿼리에 들어갑니다.세부 내용을 살펴보면 영화 테이블, 나는 하나를 본다 임대_요금 이 열은 수익을 계산하는 데 필요한 것이지만 영화 카테고리나 영화에 출연한 배우에 대한 내용은 아무것도 볼 수 없습니다.
그림 4: 영화 테이블의 열
그러나, 사용 가능한 테이블 목록을 보니 영화배우 테이블과 영화 카테고리 영화의 ID를 배우 및 카테고리에 매핑하는 것으로 보이는 테이블 배우 그리고 범주 배우와 카테고리에 대한 자세한 정보가 포함된 테이블입니다.따라서 쿼리에도 이러한 테이블이 필요합니다.그러나 단순히 4개의 테이블을 추가하면 뭔가 잘못된 것처럼 보입니다.
그림 5: 자동 가입 실패
중앙에 "X"가 있는 "정지 신호" 아이콘은 JMP가 두 테이블을 자동으로 조인할 수 없음을 의미하므로 조인을 수동으로 설정해야 합니다.JMP의 자동 조인 기능이 필요한 작업을 자주 수행하지 않는 경우 옆에 있는 빨간색 삼각형에서 기능을 끌 수 있습니다. 쿼리할 테이블 선택 .
내가 선택하면 public.film_actor (t14) 그리고 조인 수정 버튼( ), 조건 편집 대화 상자가 나타나면 조인을 구성할 수 있습니다.처음에 대화 상자는 다음과 같습니다.
그림 6: 조인 조건 편집
아직 조인 조건이 없기 때문입니다.나 참가하고 싶어 film_actor.film_id 에게 Inventory.film_id .이를 수행하려면 다음을 선택하면 됩니다. 목록 테이블의 왼쪽 열 목록을 작성하고 선택하세요. 영화_ID 두 목록 모두에서:
그림 7: 조인 조건 편집
마찬가지로 다음에 대한 조인 조건을 설정할 수 있습니다. public.film_category 장차 ~ 가 되는 Inventory.film_id = film_category.film_id .그렇게 하고 나면 상황이 더 좋아 보입니다.
그림 8: 테이블 간 조인이 유효함
모든 보조 테이블에는 다음이 표시됩니다. 왼쪽 외부 조인 벤 다이어그램 아이콘입니다.방금 만든 조인을 사용하여 영화배우 그리고 목록 예를 들어 왼쪽 외부 조인은 다음을 의미합니다. 모두 행 목록 이 경우 왼쪽 테이블인 테이블이 일치하는 항목이 있는지 쿼리에 포함됩니다. 영화배우 테이블인지 아닌지, 그러나 테이블의 행만 영화배우 행과 일치하는 테이블 목록 테이블이 포함됩니다.
그런데, t1 , t2 , t3 등, 테이블 이름 뒤의 괄호 안은 쿼리에 테이블을 추가할 때 JMP가 테이블에 할당하는 테이블 별칭입니다.테이블 별칭을 사용하면 올바른 SQL을 더 쉽게 생성하고 생성된 SQL을 더 쉽게 읽을 수 있습니다.테이블을 마우스 오른쪽 버튼으로 클릭하여 테이블 별칭을 변경할 수 있습니다. 주요한 또는 중고등 학년 테이블 목록 및 선택 별칭 변경 .테이블 별칭에는 공백이나 특수 문자를 포함할 수 없습니다.
왼쪽 외부 조인 이외의 다른 조인이 필요한 경우 왼쪽 외부 조인의 확인란을 사용하여 조인 유형을 변경할 수 있습니다. 조인 수정 대화.조인 유형과 벤 다이어그램 아이콘은 확인란의 상태를 반영하여 변경됩니다.
그림 9: 조인 유형 변경
조인이 올바르게 설정되었는지 확인하려면 미리보기 참여 단추.그러면 쿼리가 실행되고 처음 몇 백 행의 데이터에 대한 스냅샷이 표시되므로 상황이 올바른지 확인할 수 있습니다.
이제 필요한 쿼리에 모든 테이블이 있으므로 쿼리 작성 키우다 쿼리 빌더 쿼리에 포함할 열, 사용할 필터 기준, 결과 데이터의 정렬 방법 등을 지정할 수 있습니다.
섹션 3: 쿼리 작성
때 쿼리 빌더 이 쿼리에 대해 처음에 창이 나타나면 다음과 같습니다.
- 그만큼 쿼리 이름 상자에는 기본 테이블의 이름이 기본값인 쿼리 이름이 들어 있습니다.그만큼 쿼리 이름 질의를 실행하여 생성된 JMP 데이터 테이블에 할당된 이름이자 질의를 파일에 저장할 때 기본 파일 이름이기도 합니다.그만큼 데이터 소스 쿼리에서 사용 중인 데이터 원본의 이름이 표시됩니다.
- 그만큼 테이블 상자에는 현재 쿼리에 있는 테이블이 표시됩니다.테이블을 추가 또는 제거하거나 조인을 변경하려면 변화… 단추.
- 그만큼 사용 가능한 열 목록에는 쿼리에 있는 모든 테이블의 모든 열이 표시됩니다.이 목록에서 열을 선택하고 포함된 열 , 필터 , 또는 주문 패널.또는 원하는 경우 마우스 오른쪽 버튼을 클릭하여 동일한 작업을 수행할 수 있습니다.
JMP 12.1의 새로운 기능: 그만큼 사용 가능한 열 이제 패널에는 찾다 긴 목록에서 특정 열을 찾아야 하는 경우를 대비해 상자를 선택하세요.다른 것과 마찬가지로 찾다 상자에서는 입력하는 대로 필터링됩니다. - 그만큼 포함된 열 패널에는 쿼리에 포함된 모든 열의 그리드가 표시됩니다.사용 포함된 열 JMP로 가져온 후 열의 데이터가 가져야 하는 형식 및 모델링 유형과 같은 항목을 설정하는 그리드입니다.다음과 함께 집계를 지정할 수도 있습니다. 그룹화 기준 데이터를 JMP에 입력하기 전에 요약하려는 경우 열에 사용합니다.
또 한있다 견본 샘플링을 지원하는 데이터베이스에 대해 서버에서 무작위 데이터 샘플을 생성하려면 이 패널의 탭을 사용하세요. - 그만큼 쿼리 미리보기 이 영역의 탭은 자동으로 업데이트되어 쿼리 실행 시 쿼리가 반환할 데이터의 스냅샷을 표시합니다. 그만큼 SQL 탭에는 SQL이 표시됩니다. 쿼리 빌더 현재 선택을 기반으로 생성 중입니다.그만큼 쿼리 후 스크립트 탭을 사용하면 쿼리가 완료된 후 실행될 JSL 스크립트를 지정할 수 있습니다.그만큼 쿼리 상태 탭에는 백그라운드에서 실행 중인 쿼리의 상태가 표시되며 쿼리를 취소할 수 있습니다.
- 그만큼 필터 패널을 사용하면 데이터 필터링(WHERE 절 생성) 기준을 지정하고 필터를 쿼리를 실행할 때마다 실행되는 프롬프트로 전환할 수 있습니다.
- 그만큼 주문 패널을 사용하면 반환된 행을 정렬하는 데 사용할 열을 지정할 수 있습니다(ORDER BY 절).
열 추가
모든 쿼리에는 몇 가지 열이 필요합니다.다음 방법 중 하나를 사용하여 쿼리에 열을 추가합니다.
- 다음을 클릭하세요. 모두 추가 쿼리의 모든 테이블에서 사용 가능한 모든 열을 추가하는 버튼
- 다음에서 특정 열을 선택하세요. 사용 가능한 열 나열하고 클릭하세요 추가하다 또는 위로 드래그하세요.
- 열을 두 번 클릭합니다. 사용 가능한 열 목록.
이 쿼리에 대해 추가하겠습니다. 영화_ID , 제목 , 그리고 임대_요금 ~로부터 영화 테이블, 카테고리_ID 그리고 이름 ~로부터 범주 테이블, 그리고 배우_ID , 이름 , 그리고 성 ~로부터 배우 테이블.
그림 10: 처음에 열을 추가한 후
사용하여 JMP 이름, 모델링 유형 및 체재 열 포함된 열 , 데이터를 JMP로 가져온 후 각 열의 이름, 모델링 유형 및 형식을 제어할 수 있습니다.
그림 11: 열 세부 사항을 조정한 후
이 분석의 목적을 위해 배우 이름을 여러 열로 분할하는 것보다 단일 열에 연결하는 것을 선호합니다. 이름 그리고 성 열.이를 달성하기 위해 다음을 추가할 수 있습니다. 계산된 열 선택하여 계산된 열 추가 빨간색 삼각형 메뉴에서 사용 가능한 열 패널.
그러면 다음과 같은 열이 추가됩니다. 계산1 ~로 사용 가능한 열 목록을 마우스 오른쪽 버튼으로 클릭하여 사용할 수 있습니다. 열 이름 바꾸기 이름을 바꾸려면 배우 이름 , 쿼리에 추가하고 제거 이름 그리고 성 .쿼리를 수행한 후의 미리 보기는 다음과 같습니다.
그림 12: 계산된 열이 포함된 쿼리 미리보기
(배우 이름 값은 조금 이상해 보일 수 있지만 실제로는 데이터베이스에서 가져온 정확한 이름입니다.배우 이름은 이름과 성을 무작위로 조합하여 생성된 것으로 보입니다.)
쿼리 저장
현재 이 쿼리에 충분한 시간을 투자했기 때문에 작업 내용을 잃지 않도록 저장하고 싶습니다.간단히 구하다 오른쪽 하단에 있는 버튼 쿼리 빌더 쿼리를 저장하는 창입니다.파일 이름을 제공하라는 메시지가 표시됩니다. 쿼리 이름 상자가 기본으로 제공됩니다.쿼리 이름을 지정하겠습니다. 영화 카테고리 배우 .왼쪽 하단에 메시지가 표시됩니다. 쿼리 빌더 쿼리가 저장되었음을 확인하는 창:
쿼리를 저장하면 다음과 같은 파일이 생성됩니다. .jmp쿼리 확대.다시 쿼리 빌더 창을 보면 쿼리 이름 파일 이름과 일치하도록 변경되었으므로 이제 영화 카테고리 배우 .
열려 있는 쿼리와 유사한 다른 쿼리를 생성해야 하지만 원본을 보존하려는 경우 다음을 사용할 수 있습니다. 다른 이름으로 저장… 버튼을 누르면 다른 이름으로 복사본을 저장할 수 있습니다.
쿼리 실행
또한 이 시점에서 쿼리를 실행하여 데이터베이스의 모든 행을 포함하는 JMP 데이터 테이블을 생성할 수도 있습니다.다음을 클릭하세요. 쿼리 실행 하단에 있는 버튼 쿼리 빌더 쿼리를 실행하는 창입니다. 기본적으로 JMP는 쿼리가 실행되는 동안 작업을 계속할 수 있도록 백그라운드에서 쿼리를 실행합니다.사용 쿼리 상태 탭을 클릭하면 아직 진행 중인 쿼리의 상태를 확인할 수 있습니다. 쿼리 빌더 창 또는 사용 보기 > 쿼리 실행 현재 백그라운드에서 실행 중인 모든 쿼리의 상태를 확인합니다.이 특정 쿼리는 1~2초만 소요되며 88,020개의 행을 반환합니다.
그림 13: JMP 데이터 테이블의 쿼리 결과
결과 JMP 데이터 테이블에는 3개의 스크립트와 SQL 정의된 테이블 변수:
질문에 답하기
이 시점에서 나는 답을 찾고 있던 원래 질문에 거의 대답할 수 있게 되었지만 결정을 내려야 합니다. 데이터베이스에서 결과를 요약하도록 할 것인지, 아니면 원시 데이터를 데이터베이스로 가져올 것인지 결정해야 합니다. JMP를 사용하면 JMP가 작업을 수행하게 됩니까?원시 데이터가 메모리에 들어갈 만큼 크지 않고 가져오는 데 엄청나게 오랜 시간이 걸리지 않는 경우 원시 데이터를 JMP로 가져와 분석을 수행하면 많은 이점이 있습니다. JMP는 관계형 데이터보다 데이터를 훨씬 더 잘 분석할 수 있습니다. 데이터 베이스.
당면한 작업에 대해 다음을 사용하는 것은 간단합니다. 분포 플랫폼 카테고리 이름 그리고 배우 이름 , 사용 임대료 으로 주파수 변하기 쉬운.결과 히스토그램을 다음과 같이 주문하면 카운트 오름차순 , 두 가지 질문에 모두 답하는 결과를 얻었습니다.
그림 14: 쿼리 결과에 배포 플랫폼 사용
그러나 모든 원시 데이터를 가져오는 것이 크기나 경과 시간이 너무 길다면 대안으로 다음을 사용할 수 있습니다. 집합 열의 포함된 열 데이터베이스가 데이터를 요약하도록 하는 패널입니다.하지만 그러기 위해서는 두 가지 질문에 한 번에 하나씩 대답해야 합니다.
의 질문에 대답하려면 어떤 영화 장르가 가장 많은 수익을 창출하고 있나요? , 쿼리에서 배우 정보와 관련된 열을 제거하고 데이터베이스에 합계를 요청할 수 있습니다. 임대료 그룹화 기준 카테고리 이름 , 그런 다음 합계를 기준으로 결과를 정렬할 수 있습니다. 임대료 .단계는 다음과 같습니다.
- 다음을 클릭하세요. 집합 열 임대료 그리고 선택 합집합 .
그것을주의해라 그룹화 기준 지정된 집계가 없는 모든 변수에 대해 검사됩니다.쿼리의 열 중 하나라도 집계를 지정하면 해당 쿼리의 모든 열은 집계를 지정합니다. ~ 아니다 집계가 필요함을 지정합니다. 그룹화 기준 열. - 마우스 오른쪽 버튼을 클릭하세요. 변수 이름 열 임대료 그리고 선택 주문 .
- 선택하다 SUM(t4.rental_rate) 에서 주문 패널을 클릭하고 아래쪽 화살표 버튼( 내림차순 ).
결과는 다음과 같습니다.
마찬가지로 카테고리 열을 다시 꺼내고 배우 열을 다시 넣으면 다음 질문에 답할 수 있습니다. 어떤 배우가 가장 많은 수익을 창출하고 있나요? :
필터링
쿼리가 모든 원시 데이터를 검색하고 다음을 사용했던 상태로 잠시 돌아가 보겠습니다. 분포 수익 관련 질문에 답할 수 있는 플랫폼입니다.JMP에서 분석을 수행할 때 사용할 수 있는 옵션 중 하나는 JMP 분석을 위한 스크립트를 요청할 수 있다는 것입니다.
그런 다음 해당 스크립트를 쿼리 후 스크립트 패널 쿼리 빌더 :
그림 15: 쿼리 후 JSL 스크립트 추가
이제 쿼리를 실행할 때마다 해당 스크립트가 실행됩니다.
이제 질문을 좀 더 구체화하고 싶습니다.데이터베이스의 모든 대여에 대한 카테고리 및 배우 수익을 살펴보는 대신 영화를 대여한 국가, 대여한 매장 또는 특정 날짜 범위를 기준으로 살펴보고 싶을 수도 있습니다.
그만큼 임대 테이블에는 임대_날짜 , 그리고 고객 ID 필드가 있으므로 필요한 것을 거의 갖추게 되었습니다.우리는 이전에 그것을 보았다 고객 ID 에 대한 외래 키 참조입니다. 고객 테이블.로부터 고객 테이블을 통해 고객이 거주하는 국가와 DVD를 대여한 매장을 확인할 수 있습니다.
내가 클릭하면 변화… 버튼을 테이블 쿼리 작성기 패널로 돌아가서 쿼리에 더 많은 테이블을 추가할 수 있습니다.국가 정보를 얻으려면 고객 , 주소 , 도시 , 그리고 국가 쿼리에 테이블을 추가합니다.다행히 이 데이터베이스 관리자가 설정한 주요 관계로 인해 모든 테이블이 성공적으로 자동 조인되었습니다.
필요한 추가 테이블을 추가한 후 다시 쿼리 빌더로 돌아가 쿼리에 필요한 열을 추가할 수 있습니다. 임대_날짜 , 매장_ID , 그리고 국가 .또한 친숙한 JMP 이름을 설정하고 모델링 유형을 수정했습니다. 매장_ID :
그림 16: 임대 날짜, 매장 ID 및 국가 열을 추가한 후
먼저 고객의 국가를 필터링해 보겠습니다.마우스 오른쪽 버튼을 클릭하면 됩니다. t7.국가 의 변수 포함된 열 패널을 선택하고 필터링 기준 .그러면 국가에 대한 필터가 나타납니다. 필터 패널:
그림 17: 국가 필터
이 시점에서 간단히 국가 목록을 아래로 스크롤하여 관심 있는 국가를 확인한 다음 쿼리를 실행하면 해당 국가의 행만 포함됩니다.
마찬가지로 다음에 대한 필터를 추가할 수 있습니다. 매장_ID 그리고 임대_날짜 , 그 후 필터 패널은 다음과 같습니다.
내가 추가하면 임대_날짜 필터는 연속 변수이기 때문에 다음을 얻습니다. 단순 비교 기본적으로 필터링합니다.대신 내가 원하는 것은 범위 필터.옆에 있는 빨간색 삼각형 메뉴를 사용하여 t1.rental_date , 필터 유형을 다음으로 변경할 수 있습니다. 범위 :
이제 필터는 t1.rental_date 다음과 같습니다:
날짜 범위를 지정할 수 있습니다.따라서 2005년 하반기의 모든 임대 주택을 찾으려면 다음을 수행할 수 있습니다.
그림 18: 날짜 범위 필터
모든 필터 유형은 쿼리 빌더 효과적으로 비활성화할 수 있는 방법이 있으므로 특정 쿼리에 대해 필터 전체가 활성화되지 않더라도 쿼리에 여러 필터를 추가할 수 있습니다.값 목록을 표시하는 범주형 필터의 경우 (모두) 상단의 항목은 필터를 비활성화합니다.숫자 값을 요청하는 필터의 경우 값을 다음으로 설정합니다. 없어진 (.) 필터(또는 필터의 일부)를 비활성화합니다.따라서 2006년 1월 1일 이후의 모든 임대를 원하는 경우 다음과 같이 할 수 있습니다.
이제 필터 내 쿼리에 대한 패널은 다음과 같습니다 그림 19 아래에.
| 그림 19: Missing을 사용하여 필터 비활성화 | 그림 20: 두 개의 OR 그룹을 사용한 필터 |
다음과 같은 필터 선택 항목을 사용하여 그림 19 , 이제 쿼리를 실행하면 고객의 국가가 프랑스 또는 독일이고 DVD가 2006년 1월 1일 이후에 매장 2에서 대여된 행이 반환됩니다. 기본적으로 여러 필터가 함께 AND로 연결되므로 행은 모두 일치해야 합니다. 결과에 표시되는 필터입니다.OR 필터가 필요한 경우 또는 버튼을 클릭하면 또 다른 필터 그룹이 생성되고 두 필터 그룹이 함께 OR됩니다.예를 들어, 그림에 표시된 필터는 그림 20 위의 카테고리가 다음과 같은 경우 임대를 반환합니다. 드라마 또는 영화 제목에 포함된 내용 "버킷" .
프롬프트 필터
필터 기준을 지정할 수 있는 것은 좋지만 쿼리 빌더 , 전체 내용을 표시할 필요가 없는 다른 사용자가 사용할 쿼리를 생성할 수도 있습니다. 쿼리 빌더 사용자 인터페이스이지만 쿼리를 실행할 때마다 다른 필터 기준을 입력할 수 있기를 원합니다.이를 수행하는 가장 간단한 방법은 다음을 선택하는 것입니다. 실행 시 모든 프롬프트 옆에 있는 빨간색 삼각형 메뉴에서 필터 :
그러면 쿼리의 모든 필터가 격려 필터.필터 중 일부만 표시하고 다른 필터는 표시하지 않으려면 빨간색 삼각형 메뉴를 사용하여 각 개별 필터에 대해 표시를 켜거나 끌 수 있습니다.
설정 후 실행 시 모든 프롬프트 표시 , 이 쿼리를 실행하면 원하는 방식으로 필터 값을 설정하라는 메시지가 표시됩니다.
프롬프트의 기본 설정은 다음에서 선택한 것이 됩니다. 쿼리 빌더 (또는 쿼리가 파일에서 직접 실행되는 경우 저장된 쿼리 파일에서) 쿼리가 실행되기 전입니다.
프롬프트에 사용되는 레이블을 사용자 정의할 수도 있습니다.예를 들어, " 국가: "나는 프롬프트에서 다음과 같이 말하고 싶었습니다." 고객 국가: ".쿼리 빌더로 돌아가서 빨간색 삼각형 메뉴를 사용하여 t7.국가 필터, 선택 프롬프트 구성 .그러면 프롬프트의 레이블을 변경하고 프롬프트의 카테고리 수준을 제공하는 테이블을 변경할 수 있는 대화 상자가 나타납니다.
견본 추출
데이터베이스가 무작위 샘플링을 지원하는 경우 견본 상단 중앙 섹션의 탭 쿼리 빌더 데이터베이스가 지원하는 샘플링 옵션이 표시됩니다. 나는 이 문서의 예제에서 지정된 행 수의 단순 무작위 샘플링을 지원하는 PostgreSQL을 사용했습니다.
SQL Server와 Oracle은 서로 다른 샘플링 옵션을 지원하므로 견본 탭에는 다양한 옵션이 반영됩니다.
| 그림 21: SQL Server 샘플링 옵션 | 그림 22: Oracle 샘플링 옵션 |
샘플링이 수행됩니다. 데이터베이스에 의해 , 데이터가 JMP에 다운로드되기 전에 이는 엄청나게 많은 수의 행을 검색하는 쿼리에서 검색되는 행 수를 제한하는 좋은 방법입니다.
자신만의 SQL 작성
우리는 쿼리 빌더 현재 있거나 미래에 있을 수 있는 작업을 수행하는 쿼리가 필요할 때가 있습니다. 쿼리 빌더 직접적으로 지원하지 않습니다.또한 JMP가 수행해야 하는 쿼리를 정확히 수행하는 일부 SQL을 이미 작성하고 공들여 디버깅한 분들도 많습니다.쿼리 빌더 쿼리에 대한 자체 SQL을 제공하는 두 가지 옵션이 있습니다.
- 사용자 정의 필터 표현식 - 만약에 쿼리 빌더 테이블을 선택하고 포함할 열을 지정하는 데 필요한 작업을 수행하지만 사용자 정의 SQL 표현식을 필터의 일부로 포함시키려는 경우 다음을 선택할 수 있습니다. 사용자 정의 표현식 추가 ~로부터 필터 빨간색 삼각형 메뉴:
| 그림 23: 사용자 정의 필터 표현식 추가 | 그림 24: 결과 필터 |
원하는 SQL을 입력하세요. 사용자 정의 표현식 쿼리에 유효한 SQL인 경우 상자에 표시됩니다.
만약 사용자 정의 표현식 필터가 프롬프트 필터로 설정되면 사용자 정의 표현식이 필터 프롬프트 대화 상자에 나타나고 편집 가능해집니다.
- 전체 쿼리를 사용자 정의 SQL 쿼리 – 전체 쿼리에 대해 자체 SQL을 작성하려는 경우 실행 후 쿼리 빌더 데이터 연결을 지정하면 왼쪽 상단의 빨간색 삼각형 메뉴를 사용할 수 있습니다. 쿼리 빌더 ~ 옆에 쿼리 이름 필드를 선택하고 사용자 정의 SQL로 변환 :
그림 25: 사용자 정의 SQL로 변환
그만큼 쿼리 빌더 창이 사용자 정의 SQL 모드로 전환되어 자신만의 SQL을 입력할 수 있는 넓은 영역이 제공됩니다.대화형으로 쿼리 작성을 시작한 경우 사용자 정의 SQL 상자는 지금까지 선택한 내용을 기반으로 생성된 SQL로 초기화됩니다(참조: 그림 26 아래에).
그림 26: 사용자 정의 SQL 쿼리
필요에 따라 SQL을 편집하거나 다른 소스의 SQL을 붙여넣은 다음 업데이트 업데이트 버튼 쿼리 미리보기 .몇 가지 주의사항:
- 사용자 지정 SQL 쿼리로는 프롬프트 필터링을 수행할 수 없습니다.
- 쿼리를 사용자 지정 SQL로 변환하고 SQL을 편집한 후 쿼리를 다시 대화형으로 되돌리면 SQL에 적용한 모든 사용자 지정 내용이 손실됩니다. 쿼리 빌더는 SQL을 해석하려고 시도하지 않습니다.
섹션 4: 백그라운드 쿼리 관리
쿼리 빌더 기본적으로 백그라운드에서 쿼리를 실행하며 JSL(JMP 스크립팅 언어)을 사용하여 백그라운드에서 쿼리를 실행할 수도 있습니다(참조: 섹션 6 ).JMP는 현재 실행 중인 백그라운드 쿼리 목록을 보고 필요한 경우 실행 중인 쿼리를 중지할 수 있는 두 가지 방법을 제공합니다.
쿼리 상태 패널
쿼리 빌더의 중간 하단 섹션에는 쿼리 상태 탭.실행된 모든 백그라운드 쿼리 해당 쿼리 빌더 창에서 해당 탭에 나타납니다:
실행 중인 쿼리를 중지하려면 목록에서 해당 쿼리를 선택하고 멈추다 단추.일부 행이 검색되면 JMP는 이미 검색된 행이 포함된 데이터 테이블을 엽니다.데이터 테이블의 이름은 결과가 부분적이라는 것을 반영합니다.
Runninq 쿼리 창
로부터 보다 홈 창이나 메뉴가 포함된 다른 JMP 창의 메뉴에서 쿼리 실행 .그러면 다음과 같은 창이 열립니다. 쿼리 상태 탭 쿼리 빌더 , 하지만 쿼리 실행 창에는 다음이 포함됩니다 모두 호출 방법(Query Builder 창 또는 JMP 스크립팅 언어)에 관계없이 현재 백그라운드에서 실행 중인 쿼리:
여기에서도 쿼리를 선택하고 멈추다 실행을 중지하고 부분 결과를 엽니다.
섹션 5: 쿼리 공유
소개에서 이렇게 언급했는데 오픈 테이블 데이터베이스 비밀번호가 연결 문자열에 포함되어 공유하기 어려운 스크립트가 생성되었습니다.쿼리 빌더 다르게 작동합니다. 저장하면 .jmp쿼리 연결에 비밀번호가 필요한 쿼리 파일을 만들고 텍스트 편집기에서 해당 파일을 열면 다음과 같은 내용이 표시됩니다.
사용자 이름( UID )이 연결 문자열에 있지만 그러면 다음과 같이 표시됩니다. 비밀번호=%_PWD_% ."%_PWD_%"는 비밀번호가 아닙니다. 이는 쿼리 작성기에 의해 삽입된 자리 표시자입니다.쿼리 작성기가 해당 자리 표시자를 보면 원래 암호가 필요했음을 알게 됩니다. 따라서 사용자가 열 때 이 쿼리가 열리면 아직 해당 쿼리에 대한 연결이 없는 것입니다. 포스트그레스 DVD 대여 DSN, Query Builder는 사용자에게 비밀번호를 묻는 메시지를 표시합니다.
그리고 DSN 자체는 어떻습니까?이름이 지정된 DSN이 없는 JMP 사용자에게 이 .jmpquery 파일을 보내면 어떻게 될까요? 포스트그레스 DVD 대여 그들의 컴퓨터에 정의되어 있습니까?오픈 테이블 이런 상황에서는 진행할 수 없지만 쿼리 빌더 사용자에게 이 상황을 알리고 다른 DSN(아마도 동일한 데이터베이스에 연결됨)에 연결하거나 새 DSN을 만들 수 있는 기회를 제공합니다.
여러 사용자가 자신의 시스템에 서로 다른 DSN을 정의할 가능성이 있기 때문에 일부 조직에서는 DSN 없는 연결 .쿼리 빌더 현재는 DSN 기반 연결 문자열을 DSN 없는 연결 문자열로 변환할 수 없지만 쿼리 스크립트에서 연결 문자열을 변경하여 DSN , 이는 다음을 지정합니다. 운전사 그리고 섬기는 사람 , 쿼리 빌더 생성된 모든 스크립트 또는 .jmpquery 파일에 이 DSN 없는 연결을 전파합니다.
섹션 6: JSL(JMP 스크립팅 언어)에서 쿼리 실행
쿼리 작성기로 작성된 쿼리는 다음에서도 실행할 수 있습니다. JSL(JMP 스크립팅 언어) 스크립트. 가장 좋은 방법은 쿼리를 .jmp쿼리 파일을 JSL에서 열고 실행합니다. 예를 들어 c:\사용자\공개\임시 이름이 지정된 폴더 pg_rentals.jmp쿼리 .JSL의 해당 쿼리 파일로 수행할 수 있는 작업은 다음과 같습니다.
- .jmpquery 파일을 쿼리 빌더로 엽니다.
열려 있는 ( "c:\users\public\temp\pg_rentals.jmpquery" ) ;
질문 = 열려 있는 ( "c:\users\public\temp\pg_rentals.jmpquery" , 사적인 ) ;
질문 << 수정하다 ;
질문 << 달리다 () ;
- 포그라운드에서 쿼리를 실행합니다. 쿼리가 완료되면 결과 데이터 테이블이 JMP에서 열립니다. dtResult는 결과 데이터 테이블에 대한 참조가 됩니다.
dt결과 = 질문 << 전경 실행 () ;
- 쿼리를 포그라운드에서 실행하되 ~ 아니다 JMP에서 결과 데이터 테이블을 엽니다. 비공개로 유지하세요.dtResult는 결과 데이터 테이블에 대한 참조가 됩니다.
dt결과 = 질문 << 전경 실행 ( 사적인 ) ;
- 백그라운드에서 쿼리를 실행합니다. 쿼리가 완료되면 결과 데이터 테이블이 JMP에서 열립니다. Run Background는 쿼리가 단순히 백그라운드에서 실행되기 때문에 결과 데이터 테이블에 대한 참조를 반환할 수 없습니다.다음 예제는 백그라운드에서 쿼리를 실행할 때 결과 데이터 테이블에 대한 참조를 얻는 방법을 보여줍니다.
질문 << 배경 실행 () ;
- 백그라운드에서 쿼리를 실행합니다. 쿼리가 성공하면 결과 데이터 테이블에서 배포 플랫폼을 호출합니다( 쿼리결과 내의 특수 JSL 변수입니다. 실행 완료 시 결과 데이터 테이블을 참조하는 스크립트). 사용자가 쿼리를 취소하거나 오류가 있는 경우 JMP 로그에 메시지를 기록합니다.
질문 << 배경 실행 (
실행 완료 시 (
쿼리결과 << 분포 ( 명목분포 ( 열 ( : 제목 ) ) ) ;
) ,
실행 중 취소됨 ( 쓰다 ( "\!N쿼리가 취소되었습니다!") ) ,
오류 시 ( 쓰다 ( "\!N쿼리 실행 중 오류가 발생했습니다!") ; )
) ;
- 백그라운드에서 쿼리를 실행합니다.쿼리가 성공적으로 완료되면 MyFunc 함수를 호출합니다. 쿼리 결과 데이터 테이블은 항상 함수의 첫 번째 매개변수로 전달됩니다.
:: 마이펑크 = 기능 ( { dt } , { 기본 로컬 } ,
쓰다 ( "\!n대여 횟수: " , N행 ( dt ) ) ;
dt << 분포 ( 명목분포 ( 열 ( : 제목 ) ) ) ;
) ;
질문 << 배경 실행 ( 실행 완료 시 ( :: 마이펑크 ) ) ;
JSL 스크립트의 별도 .jmpquery 파일에서 쿼리를 여는 것이 만족스럽지 않은 경우 왼쪽 상단에 있는 빨간색 삼각형 메뉴에서 쿼리 스크립트 가능 개체를 생성하기 위한 원시 스크립트를 얻을 수 있습니다. 쿼리 빌더 창문:
예를 들어, 호출 실행 스크립트를 스크립트 창에 저장 간단한 쿼리를 통해 다음과 같은 결과를 얻을 수 있습니다.
새 SQL 쿼리 다음과 같이 SQL 쿼리 스크립트 가능 개체를 반환합니다. 열려 있는 .jmpquery 파일을 열 때 수행되며 동일한 방식으로 모두 사용될 수 있습니다.
JMP 12.1의 새로운 기능은 무엇입니까?
찾다
우리와 대화를 나누는 많은 사람들은 데이터베이스에 수백 개의 스키마, 테이블, 열에 엄청난 양의 데이터를 갖고 있습니다.JMP 12.1 버전의 쿼리 빌더에는 다음을 추가했습니다. 찾다 스키마, 테이블 및 열 목록에 상자를 추가하면 원하는 항목을 빠르게 찾을 수 있습니다.
이들 모두 찾다 입력하는 대로 상자가 업데이트되며 다음을 사용할 수 있습니다. 정규 표현식 검색을 세분화하려면
관련 테이블 추가
에서 쿼리할 테이블 선택 대화 상자에서 쿼리에 추가한 테이블에 다른 테이블에 대한 외래 키 참조가 있는 경우 관련 테이블 추가 단추.
템플릿으로 열기
.jmpquery 파일에 작성하고 저장한 다른 쿼리와 매우 유사한 쿼리를 작성해야 하는 경우가 많습니다.언제든지 이전에 저장된 쿼리를 열고 변경한 후 사용할 수 있습니다. 다른 이름으로 저장 다른 .jmpquery 파일에 저장하려고 했지만 실수로 구하다 실수로 원래 쿼리를 덮어쓰게 됩니다.그만큼 템플릿으로 열기 해당 시나리오를 방지하기 위한 기능이 존재합니다.템플릿으로 열기 Mac과 Windows 모두에서 .jmpquery 파일에 대한 홈 창 컨텍스트 메뉴에서 사용할 수 있습니다.
.jmpquery를 템플릿으로 열면 실제로 복사 디스크의 .jmpquery 파일과 연관되지 않은 원래 쿼리입니다.쿼리를 템플릿으로 열고 변경한 후 실수로 구하다 버튼을 클릭하면 쿼리를 저장할 파일을 제공하라는 메시지가 표시됩니다.
JSL(JMP 스크립팅 언어)에서 .jmpquery 파일을 템플릿으로 열 수도 있습니다.
열려 있는 ( "C:\Users\Public\Temp\rentals.jmpquery" , 템플릿으로 ) ;
계산된 열 수식 편집
JMP 12.0에서는 데이터베이스 서버에서 계산되는 쿼리에 계산된 열을 추가할 수 있으며 결과 값은 쿼리에 반환됩니다.하지만 이전에 생성한 계산 열의 수식을 편집해야 하는 경우에는 편집이 불가능했습니다.대신 계산된 열을 삭제하고 새 열을 추가해야 했으며 아마도 복잡한 수식을 다시 만들어야 할 수도 있습니다.JMP 12.1에서는 이제 계산된 열을 편집할 수 있는 옵션이 제공됩니다.열을 마우스 오른쪽 버튼으로 클릭하면 됩니다. 사용 가능한 열 그리고 선택 수식 편집 :
버그 수정
예상하신 대로 JMP 12.1 쿼리 작성기의 여러 버그를 수정했으며 그 중 일부는 고객이 보고한 것입니다.Query Builder를 사용하면서 문제가 발생하는 경우 SAS 기술 지원을 통해 문제를 보고해 주시면 해결해 드리겠습니다.
결론
쿼리 빌더 JMP 12(JMP 12.1에서 업데이트됨)의 새로운 기능으로, 관계형 데이터베이스에 대해 고도로 사용자 정의된 다중 테이블 SQL 쿼리를 구축하는 데 도움이 됩니다.목표는 이전보다 더 빠르게 데이터를 분석 가능한 형태로 JMP에 더 쉽게 가져오고 쿼리를 안전하게 공유할 수 있도록 하는 것입니다.사용해 보시고 피드백을 보내주시기 바랍니다( eric.hill@jmp.com ) 당신에게 잘 맞는 것과 그렇지 않은 것에 대해 알아보세요.