나는 새로운 Query Builder를 시연하기 위해 좋은 데이터를 찾고있었습니다. JMP 12 월 3 일. 쿼리 작성기는 사용자가 흥미로운 데이터를 찾고 반복 가능하고 공유 할 수있는 정확한 쿼리를 작성하도록 도와주는 최신 SQL 데이터베이스 쿼리 도구입니다. JMP와 함께 제공되는 샘플 데이터와 다른 데이터가 필요했습니다. 그것은 많은 고객이 데이터를 저장하는 테이블 세트 일 필요가있었습니다. 그리고이 세트는 표 사이에 정의 된 관계를 가져야했으며 각각은 다른 관심 주제를 설명했습니다.
여러 주제가 포함 된 데이터를 어디에서 찾아야하며 소프트웨어가 통계적 발견 속도를 높이는 방법을 보여줄만큼 충분히 풍부해야합니까? 많은 동료들이 iTunes를 사용하여 음악을 듣고 듣기에서 흥미로운 데이터를 생성 할 수 있다는 생각이 들었습니다.
웹에 대한 약간의 연구를 통해 나는 iTunes가 XML 파일을 생성합니다 다른 응용 프로그램에서 음악 및 재생 목록을 사용할 수있게합니다. 이것은 JMP에 적합하다고 들었습니다. 그리고 나는 데이터 분석 괴짜이기 때문에 JMP에서 iTunes 데이터를 보는 것이 재미있을 것 같았고 필요한 데이터를 얻을 수있었습니다.
JSL을 사용하여 iTunes 파일 용 XML 파서를 작성했습니다. 나는 또한 iTunes 데이터를 공유하고자하는 사람들로부터 인구 통계 데이터를 수집하기 위해 JSL에서 간단한 설문 조사를 작성했습니다. 프로젝트는 네 부분으로 깔끔하게 나뉘었다 :
JMP로 XML 읽기JSL 디버거에서 성능 프로파일 러를 사용하여 JSL 성능 향상Application Builder를 사용하여 설문 조사 만들기iTunes 데이터 분석하기JMP로 XML 읽기
우리는 종종 "JMP가 XML 파일을 열지?"라는 질문을 받는다. 이것은 까다로운 질문이다. XML은 "태그"의 임의의 트리로 구성된 정보를 포함하는 텍스트 파일입니다.
3 개의 데이터 행이있는 두 개의 변수 X 및 Y에 대한 데이터가 포함 된 간단한 XML 예제를 살펴 보겠습니다.
다음은 XML 데이터 예제입니다.
다음은 XML 데이터를 구문 분석하는 간단한 JSL 예제입니다.
예 = 텍스트 파일로드 ( "xml data example.xml");
XML 구문 분석
( 예,
요소
( "테이블",
시작 태그 (새 테이블 (XML Attr ( "name")))
),
요소
( "col",
끝 태그 (새 열 (XML Attr ( "name"),
값 설정 (구문 분석 (XML 텍스트 ()))))
)
);
위의 JSL에서 사용 된 세 가지 주요 요소에 주목하십시오. On Element 구문은 "table"또는 "col"문자열이 기호로 표시된 XML "태그"내에있을 때 실행할 JSL 표현식을 나타냅니다. 시작 태그 및 종료 태그는 "테이블"또는 "col"태그의 시작 부분 또는 태그의 끝 부분에서 실행해야하는 JSL 표현식을 나타냅니다. 이 경우, "table"태그가 시작될 때마다 새 테이블 표현식이 실행되고 "col"태그가 끝날 때마다 (태그에 의해) New Column 표현식이 실행됩니다. 끝 태그에서 새 열 및 값 설정을 실행하면 값을 설정하기 전에 열 값을 모두 읽을 수 있습니다.
결과 JMP 데이터 테이블은 다음과 같습니다.

Apple iTunes XML
이제 Apple이 iTunes 데이터를 XML에 저장하는 방법을 살펴 보겠습니다. XML은 Apple의 "plist"데이터 구조를 기반으로 한 형식입니다. 나는 Apple 웹 사이트에있는 문서 파일 요소의 기본 사항을 제공합니다.
다음은 iTunes를 사용하여 생성 된 iTunes Library.xml 파일의 일부입니다. 키 태그는 열 이름이거나 새로운 트랙이 올 것임을 나타내는 일반 트리거로 사용됩니다. 다른 태그 (정수, 문자열 등)는 데이터의 관측을 나타내고 데이터 유형을 제공합니다.
2739
트랙 ID2739
이름포춘 플란 고 (Fortune Plango Vulnera)
예술가칼 오프
...
다음은 제가 작성한 짧은 JSL 프로그램입니다.이 프로그램은 축소 된 iTunes Library.xml 파일 집합과 잘 작동하는 것 같습니다. 축소 된 데이터 세트를 작성하기 위해 텍스트 편집기에서 .xml 파일 (mine은 14MB)을 열고 처음 몇 트랙 상당의 데이터를 복사했습니다.
iTunespath = "~ / 음악 / iTunes / iTunes 라이브러리 short.xml";
// xml 파일을 전역 'iTunespath'의 메모리에로드합니다.
cd_file_contents = 텍스트 파일로드 (iTunespath);
// 원시 데이터를 보관할 빈 데이터 테이블을 만듭니다.
원시 dt = 새 테이블 ( "iTunes 데이터 원시");
원시 dt << 새 열 ( "이름", 문자);
원시 dt << 새 열 ( "값", 문자);
// iTunes xml을 파싱합니다.
XML 구문 분석 (cd_file_contents,
OnElement ( "key", 시작 태그 (행 ()> 0, 원시 dt << 행 추가)), 끝 태그 (열 dt, "이름") [행 ()] = XML 텍스트 ( )))),
onElement ( "정수", 끝 태그 (열 dt, "값") [행 ()] = XML 텍스트 ()))
onElement ( "진짜", 끝 태그 (열 dt, "값") [행 ()] = XML 텍스트 ()))
onElement ( "date", end 태그 (Column (raw dt, "values") [Row ()] = XML Text ()))
onElement ( "data", end 태그 (Column (raw dt, "values") [Row ()] = XML Text ()))
onElement ( "문자열", 끝 태그 (열 dt, "값") [행 ()] = XML 텍스트 ()))
onElement ( "true", 종료 태그 (열 dt, "값") [행 ()] = XML 텍스트 ()))
onElement ( "false", 끝 태그 (열 dt, "값") [행 ()] = XML 텍스트 ()))
끝 태그 (행 ++)
); // iTunes XML의 끝 구문 분석
프로그램 제작 내용은 다음과 같습니다.

처음에는 필요없는 데이터가 있지만 나중에 정리할 수 있습니다.
이제 큰 문제는 스크립트가 내 14MB 파일로 확장 될 것인가입니다. 시계 사용 시간은 1 분 45 초였습니다. 다음 블로그 포스트에서는 JSL 디버거의 성능 프로파일 러를 사용하여 코드 속도를 높이는 방법을 보여줍니다.