테이블 변수와 열을 사용하여 계산하는 가장 좋은 방법은 무엇입니까?JSL(TestJSL) 스크립트는 두 개의 테이블 변수를 생성합니다. 스크립트 내에서는 IF 상태 등을 적용하여 기존 열 :D0에서 새 열 :D1을 계산하는 데 사용됩니다.
:D1에 대한 다소 복잡한 공식을 사용하는 것보다 이를 수행하는 더 좋은 방법이 있습니까?
Re: 테이블 변수와 열을 사용하여 계산하는 가장 좋은 방법은 무엇입니까?다시 한 번 감사드립니다. 이제 업데이트 스크립트를 실행하면 작동합니다. 수식의 매력은 데이터 업데이트가 자동으로 수행된다는 것입니다. 약 100,000개 행에 대한 공식을 사용하여 이 작업을 수행하는 것이 위험합니까(오류 방지 ….)? 수식을 고수한다면 첫 번째 부분이 계산되는 :DT 열을 생성하는 것이 더 나을 것입니다. If( :P1 == 0 & :P2 < :Threshold, :D0 ) 이 경우 스크립트는 어떻게 보일까요? 해당하는 D1a, .D1b 열을 생성하기 위해 D0a :D0b 열이 여러 개 있습니다.
Re: 테이블 변수와 열을 사용하여 계산하는 가장 좋은 방법은 무엇입니까?당신의 공식은 효과가 있었으므로 그것을 사용할 수 있습니다. 나는 공식이 유지 관리하기 어렵다는 데 동의합니다.
대안은 테이블에 스크립트를 추가하는 것입니다. 분위수와 임계값을 변경하고 스크립트를 실행하는 방법을 보여주는 JSL( wait(5) 뒤에)을 추가했습니다. 또는 대화식으로 2개의 변수를 변경하고 D1 업데이트를 클릭하세요.
사용하기 가장 쉬운 방법을 사용하십시오.
//Create Table Variable
dt = currentdatatable();
dt << Set Table Variable( "Quantile", 0.9 );
dt << Set Table Variable( "Threshold", 1 );
dt << New Column("D1", Numeric, Continuous);
dt << New Script ("Update D1",
dt = current data table();
_xx = dt << get rows where(:P1 ==0 & :P2 <:Threshold);
dt << Set Table Variable("QQ", Quantile(dt:Quantile, dt:D0[_xx] ));
qq = Quantile(dt:Quantile, dt:D0[_xx] );
//caption(char(qq)); wait(2); caption(remove); //uncomment to test
dt:D1 << Set Each Value(
If(:P1 ==0 & :P2 <:Threshold & :D0< qq, :D0, empty())
);
);
wait(5);
dt << Set Table Variable( "Quantile", 0.6 );
dt << Set Table Variable( "Threshold", 1.8 );
dt << Run Script("Update D1") ;
Re: 테이블 변수와 열을 사용하여 계산하는 가장 좋은 방법은 무엇입니까?솔루션을 제공해 주셔서 감사합니다. 잘 작동합니다. 그러나 JSL이 실행되고 테이블 변수 "Quantile" 및 "Threshold"를 다시 조정한 후 새 열:D1은 "Threshold"의 변경 사항에만 응답하고 "Quantile"의 변경 사항에는 응답하지 않습니다. 이 문제가 해결될 수 있나요?
@gzmorgan0 썼다:
테이블 수식과 테이블 변수 없이 설정된 값을 사용하여 이 작업을 수행하는 방법은 여러 가지가 있습니다.
스크립트가 수식을 사용했기 때문에 이 대체 JSL은 수식을 사용합니다. 열 수식 없이도 사용할 수 있는 경우 분위수, 임계값을 묻는 스크립트를 포함하여 다른 방법을 사용할 수 있으며 qq를 다시 계산하고 D1을 다시 계산합니다.
//Create Table Variable
dt = currentdatatable();
dt << Set Table Variable( "Quantile", 0.9 );
dt << Set Table Variable( "Threshold", 1 );
_xx = dt << get rows where(:P1 ==0 & :P2 <:Threshold);
dt << Set Table Variable("QQ", Quantile(dt:Quantile, dt:D0[_xx] ));
dt << New Column("D1", Numeric, Continuous,
Formula( If(:P1 ==0 & :P2 <:Threshold & :D0< :QQ, :D0) )
);
솔루션을 제공해 주셔서 감사합니다. 잘 작동합니다. 그러나 JSL이 실행되고 테이블 변수 "Quantile" 및 "Threshold"를 다시 조정한 후 새 열:D1은 "Threshold"의 변경 사항에만 응답하고 "Quantile"의 변경 사항에는 응답하지 않습니다.
Re: 테이블 변수와 열을 사용하여 계산하는 가장 좋은 방법은 무엇입니까?테이블 수식과 테이블 변수 없이 설정된 값을 사용하여 이 작업을 수행하는 방법은 여러 가지가 있습니다.
스크립트가 수식을 사용했기 때문에 이 대체 JSL은 수식을 사용합니다. 열 수식 없이도 사용할 수 있는 경우 분위수, 임계값을 묻는 스크립트를 포함하여 다른 방법을 사용할 수 있으며 qq를 다시 계산하고 D1을 다시 계산합니다.
//Create Table Variable
dt = currentdatatable();
dt << Set Table Variable( "Quantile", 0.9 );
dt << Set Table Variable( "Threshold", 1 );
_xx = dt << get rows where(:P1 ==0 & :P2 <:Threshold);
dt << Set Table Variable("QQ", Quantile(dt:Quantile, dt:D0[_xx] ));
dt << New Column("D1", Numeric, Continuous,
Formula( If(:P1 ==0 & :P2 <:Threshold & :D0< :QQ, :D0) )
);