JSL로 jmp 데이터 테이블 쿼리안녕,
Big Class.jmp에서 12세와 13세의 고유한 이름 목록을 가져와야 합니다.
내 현재 방법은 매우 비효율적 인 것 같습니다. (어디서 선택, 하위 집합...)
Query()로 이를 수행하는 방법은 무엇입니까?
감사해요.
내 스크립트는 다음과 같습니다
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
AgeList = {13, 15};
dt << Select where( Contains( AgeList, :Age ) > 0 );
SubsetDt = dt << Subset( Selected Rows, Columns( "name" ) );
Summarize( SubsetDt, DistinctNames = By( :(1) ) );
Close( SubsetDt, nosave );
Show( DistinctNames );Re: JSL로 jmp 데이터 테이블 쿼리대단히 감사합니다. 이것이 바로 제가 필요한 것입니다.
Re: JSL로 jmp 데이터 테이블 쿼리고마워, 짐, @txnelson .
@tom_abramov , 이를 수행하는 여러 가지 방법이 있습니다. 질의라는 단어를 사용했기 때문에 더 복잡한 SQL 유형 선택이 있을 수 있다고 생각하여 JMP query() 함수를 사용했습니다.다음은 SQL 구문이 필요하지 않은 간단한 방법입니다. 연관 배열은 키 목록이며 키는 고유해야 합니다.:name[idx]는 12, 13, 15세의 모든 행 목록을 생성합니다. 연관 배열에는 연관된 값이 1인 고유한 이름만 있습니다. 고유한 이름은 연관 배열의 키입니다.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
idx = dt << get rows where(Contains(Agelist,:age));
uniq_names = Associative Array( :name[idx] ) <<GET keys=""></GET>
Re: JSL로 jmp 데이터 테이블 쿼리쿼리가 데이터 테이블을 생성하도록 하는 것은 실제로 방해 요소가 아닙니다.아래 스크립트는 최종 데이터 테이블에서 이름 열의 내용을 목록으로 이동한 다음 데이터 테이블을 삭제하는 내용을 추가하여 이전 스크립트를 간단하게 수정한 것입니다.스크립트를 실행하는 사람에게는 데이터 테이블이 표시되지 않습니다.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
_xx = Words( Char( AgeList ), "{}" )[1]; //convert to a comma delimited text and remove braces {}
ndtQ = Query( Table( dt, "t1" ),invisible, Eval Insert( "SELECT DISTINCT name From t1 WHERE age IN (^_xx^)" ) );
namesList = ndtQ:Name << get values;
Close( dt, NoSave );
close(ndtQ, nosave);Re: JSL로 jmp 데이터 테이블 쿼리매우 도움이 됩니다. 감사합니다.
저는 JMP15를 사용하고 있습니다.
한 가지 더 질문 - 데이터 테이블을 생성하는 대신 쿼리 결과를 목록에 직접 저장할 수 있습니까?
테이블이 필요하지 않기 때문에 고유한 이름 목록이 필요합니다.
그렇지 않은 경우 Select Where --> Subset보다 훨씬 낫습니다.
감사해요.
Re: JSL로 jmp 데이터 테이블 쿼리@tom_abramov ,
사용 중인 JMP 버전을 언급하지 않았습니다.JMP query() 함수가 JMP 12 또는 13에서 처음 사용 가능한지 기억이 나지 않습니다. JMP 테이블에서 표준 SQL 문을 사용할 수 있습니다.Big Class에는 12세 및 15세에 대한 고유하지 않은 이름 Robert가 하나만 있으므로 귀하의 요청을 12, 13 및 15세에 대해 수정했습니다.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
_xx = Words( Char( AgeList ), "{}" )[1]; //convert to a comma delimited text and remove braces {}
ndtQ = Query( Table( dt, "t1" ), Eval Insert( "SELECT DISTINCT name From t1 WHERE age IN (^_xx^)" ) );
ndtQ << set name( "Unique BC Names" );
Wait( 3 );
Close( dt, NoSave );
결과는 다음과 같습니다.
