Re: 테이블 속도 향상/업데이트처음에는 진행률 표시줄이 사용자에게 도움이 될 수 있습니다.
... 약간: Jmp가 충돌하지 않고 백그라운드에서 무언가를 수행한다는 것을 이해합니다.
Re: 테이블 속도 향상/업데이트이것을 시도해 보세요 - 40명의 학생, N x:
Names Default to Here(1);
// adjust the size and check// +1 means: data table size x 2// ... and update time x 4
mySize=12;
dt0 = Open( "$SAMPLE_DATA/Big Class.jmp" );
increaseSize= Function({dt,cycles},
for(i=1,i<=cycles,i++,
dt << Concatenate(dt, Append to first table))
);
increaseSize(dt0,mySize);
show(nrows (dt0));
dt2 = subset(dt0);
//if you are brave, enable this:
/*for (i=1,i<5,i++,
dt2 << new column("new", set each value (random uniform()))
);*/
//generate a list of columns which should be added
Cols = dt2 << get column names();
remove from (cols, {1,2,3} );
dt0 << Delete Columns( :height, :weight );
t1=hptime();
Eval(Eval Expr(dt0 << Update(
With( dt2 ),
Match Columns( :name = :name, :sex = :sex ),
Add Columns from Update Table(
Expr(Cols)
),
Replace Columns in Main Table( None )
)));
show((hptime()-t1)/1000000); // on my notebook: ~ 15s per column
close(dt0, noSave);
close(dt2, noSave);Re: 테이블 속도 향상/업데이트흥미로운 점: 비활성화
remove from (cols, {1,2,3} );테이블/업데이트에 추가로 10초가 소요됩니다.
추가되는 각 열에 대해서만 행 일치가 수행되지 않는 것 같습니다.
이미 존재하는 열에 대해서도 어느 정도 수행됩니다.
Re: 테이블 속도 향상/업데이트하나는 테이블/업데이트 사용자 정의 플랫폼이 있는 플랫폼.
- 열 추가/바꾸기를 다음으로 설정합니다. 선택됨/없음 (대신에 모두/모두 ) --> 미리 보기를 위해 더 적은 열이 평가됩니다.
- 사용자 정의 버튼 확인(고속) 설정을 변환한 후 테이블/조인을 트리거할 수 있습니다.
UpdateHS()를 통해

Names Default to Here(1);
dt = Current Data Table();
If(isempty(dt) | N rows(dt )==0, stop());
Try( myDTUpdate << close window() );
myDTUpdate = New Window( "Update - high speed", dt << update() );
myDTUpdate[Lineup Box( 1 )] << Prepend( mb = MouseBox( Button Box( "OK (HS)", updateHS() ) ) );
mb << settooltip( "high speed via Tables/join" );
//DtUpdateHS:myDTUpdate["Preview", CheckboxBox( 1 )] << set( 1, 0 );
myDTUpdate["Add Columns from Update Table", Radio Box( 1 )] << set( 3 );
myDTUpdate["Replace Columns in Main Table", Radio Box( 1 )] << set( 2 );
Re: 테이블 속도 향상/업데이트UPDATE가 자체 기능을 사용하지 않으면 엄청난 개선을 이룰 수 있을 것 같습니다.
...하지만 백그라운드에서 JOIN을 트리거했습니다.
Re: 테이블 속도 향상/업데이트테이블/조인과 테이블/업데이트 간의 속도 차이와 관련하여 Jmp 지원팀(TS-00044631)에서 다음과 같은 피드백을 받았습니다.
기본적으로 Update와 Join은 일치 항목이 여러 개인 경우 서로 다른 작업을 수행합니다.[...] 조인은 다음을 사용합니다. 첫 번째 일치하므로 일치하는 항목을 찾는 즉시 완료됩니다.
[...] 모든 일치 항목을 통해 [모양]을 업데이트하고 각 항목을 적용하고 마지막 막대기. *)
이것은 많은 데이터 사본으로 인해 위의 특별한 경우에 대한 엄청난 타이밍 차이를 설명합니다.
따라서 고유하지 않은 값과 많은 열이 있는 테이블이 있는 경우 업데이트를 사용할 때 주의해야 합니다.
반면에 Jmp가 다음의 존재를 확인하면 문제가 쉽게 해결됩니다. 고유하지 않은 값과 많은 열 미리보기를 계산하기 전에 
*) 테이블/조인과 테이블/업데이트의 차이점은 Jmp 지원의 다음 예에서 잘 설명됩니다.
주의 가입 테이블에는 모든 것이 있습니다 1 는 col2에 있고 업데이트됨 테이블에는 모든 것이 있습니다 삼 col2에 있습니다.
dt0 = New Table( "MyTable",
Add Rows( 3 ),
New Column( "col1",
Character, "Nominal",
Set Values({"a", "a", "a"})
),
New Column( "col2",
Numeric,
"Continuous",
Set Values([1, 2, 3])
)
);
dt2 = subset( dt0 );
Cols = dt2 << get column names();
Remove From( cols, {1} );
dt0 << Delete Columns( :col2 );
Eval(Eval Expr(dt0 << Join(
With( dt2 ),
Select( :col1 ),
SelectWith(Expr( Cols) ),
By Matching Columns( :col1 = :col1 ),
Drop multiples( 0, 1 ),
Preserve main table order( 1 ),
)));
Eval(
Eval Expr(
dt0 << Update(
With( dt2 ),
Match Columns( :col1 = :col1 ),
Add Columns from Update Table( Expr( Cols ) ),
Replace Columns in Main Table( None )
)
)
);Re: 테이블 속도 향상/업데이트
@호기 썼다:
하지만 이 함수는 열 개수가 아닌 테이블의 길이만 확인하는 것이 아닌가 걱정됩니다.
실제로 Tables/Update에서는 컬럼 개수를 확인하는 것 같습니다.
- 열이 100개를 초과하면 자동 업데이트가 비활성화됩니다.
하지만 Jmp는 메인 테이블의 행/열 수만 확인하는 것 같습니다.
두 번째 테이블이 아닙니다.
따라서 기본 테이블의 열 수가 너무 크면 미리보기가 비활성화됩니다. 단 # 열(기본 테이블)은 속도에 영향을 미치지 않습니다.
Names Default to Here(1);
// adjust the size and check// +1 means: data table size x 2//
mySize1=7;
dt0 = Open( "$SAMPLE_DATA/Big Class.jmp" );
new column ("one", set each value(1));
increaseSize= Function({dt,cycles},
for(i=1,i<=cycles,i++,
dt << Concatenate(dt, Append to first table))
);
increaseSize(dt0,mySize1);
numberRows0 = Nrows(dt0);
dt2 = dt0 << Subset( All rows, columns( :name, :age ) );
for (i=1,i<1000,i++,
dt2 << new column("new", set each value (random uniform()))
);
numberRows2 = Nrows(dt2);
dt2Name = dt2 << get name();
New Column( "Rank", Formula( Col Rank( Row(), :name ) ));
Try(updateWindow << close window());
updateWindow = New window("are you brave?",
dt 0 << update()
);
updateWindow[Text Box(1)] << background color (Orange) << text color (white )<< set font ("Arial Black", 10)
<< set text("The tables have <10k rows. \!nBut the second table has > 1000 columns. \!nSo I deactivated the preview for you.\!nIf you have some time, activate it again ...");
updateWindow["Preview", CheckboxBox( 1 )] << set( 1, 0 );
updateWindow[ListBoxBox( 1 )] << set selected (loc(updateWindow[ListBoxBox( 1 )] <<GET items=""></GET>
편집하다:
때로는 추가 일치 조건(예: 소스 테이블의 순위)을 추가하는 노력이 가치가 있습니다.
이렇게 하면 일치하는 항목 수가 줄어들고 미리보기 및 실제 업데이트 속도가 엄청나게 빨라집니다.
테이블/업데이트 속도 향상이러한 위시리스트 요청을 하게 된 계기는 무엇이었나요?
☐ 멋진 새로운 기능
☑ 많은 사용자에게 도움이 될 수 있습니다!
☑ "버그"를 제거합니다.
☐ 있으면 좋다
☐ 아무도 필요하지 않아요
#나의탑10_2023
(이 옵션 또는 테이블 조인: 기본 테이블 업데이트 옵션 )
우리는 해결 방법을 가지고 있습니다 -> 더 이상 필요하지 않습니다
테이블 업데이트는 열을 데이터 테이블에 병합하거나 다른 데이터 테이블의 데이터로 열을 업데이트하는 데 사용할 수 있는 매우 유용한 플랫폼입니다.
하지만 때로는 사용자가 Jmp가 데이터 테이블 업데이트를 완료할 때까지 오랜 시간 기다려야 하는 경우가 있습니다. 이는 중간 크기의 데이터 테이블인 경우에도 마찬가지입니다.
때로는 Jmp가 업데이트 GUI에서 설정을 편집하는 동안 멈추는 경우가 있습니다.
그런 다음 Jmp가 충돌한 것 같지만 몇 분(혹은 가끔은 몇 시간) 후에 Jmp는 데이터 미리보기에 대한 계산을 완료하고 사용자에게 설정을 편집할 기회를 다시 제공합니다.
한 테이블의 수십만 개의 값을 다른 테이블의 값과 일치시키려면 시간이 꽤 걸린다는 것은 분명합니다.
하지만 두 개의 열을 병합하는 데 한 개의 열을 병합하는 데 걸리는 시간보다 두 배나 더 오래 걸린다는 사실에 놀랐습니다.
병합된 각 열에 대해 일치 단계가 다시 트리거되나요? 아니면 실제로 값을 정렬하는 데 시간이 많이 걸리나요?
종종 소스 테이블에 고유 식별자가 없습니다. 하나의 일치 값이 열에 여러 번 나타나고 병합할 열에도 동일한 값이 있습니다. 이 경우 첫 번째 일치 값이 대상 데이터 테이블에 입력된 다음 두 번째 일치 값으로 대체되는지 궁금합니다.
소스 테이블에서 마지막으로 일치하는 값을 검색하고 이 값만 삽입하면 이 작업을 가속화할 수 있습니다.
업데이트 플랫폼의 큰 단점:
열 추가 및 열 바꾸기가 활성화된 것으로 시작합니다.
예를 들어 표에 1000개의 열이 있는 경우 모든 열이 미리 보기 창에 추가될 때까지 시간이 걸립니다.
이 문제는 rows_main x rows_2nd x columns_2nd로 확장됩니다.
그리고 제가 아무리 멍청하더라도, 종종 매치 열을 정의하는 것부터 시작하는데... 그러면 실제로 표에 추가하고 싶은 (1-2)개의 열을 선택할 수 있을 때까지 오랜 시간 고민하게 됩니다.
표가 너무 큰 경우 미리보기를 비활성화하는 기능이 있습니다.
하지만 저는 해당 함수가 테이블의 길이만 확인하고 열의 개수는 확인하지 않는 게 걱정입니다.
아니면 임계값이 너무 큰가요?
미리보기 탭이 업데이트된 후 Jmp 세션이 다시 시작될 때까지 시간을 채워야 했던 적이 얼마나 되었는지 경험을 공유해 주세요.
또 다른 문제는 리콜 버튼입니다.
(여기서 해결됨: Recall을 통해 GUI를 채우는 동안 미리보기 비활성화 )
불러오기를 클릭하면 저장된 설정이 업데이트 메뉴에 입력되고 GUI 설정이 변경될 때마다 미리 보기 탭이 업데이트되는 것 같습니다.
따라서 대용량 데이터 테이블을 결합하려는 경우(단일 열만 추가하려는 경우라도) 미리 보기를 비활성화하기 전에 '호출...' 버튼을 누르지 마세요.
어떤 개선을 원하시나요?
Tables/Update의 성능을 개선해 주시겠어요.
왜 이 아이디어가 중요한가요?
Tables/Update는 훌륭한 기능입니다. Preview Tab은 놀라울 정도로 유용해서, 그것 없이 일하고 싶지 않습니다.
하지만 점점 편집증이 생기기 시작했습니다. 다음에 데이터 테이블에 열을 추가하려고 하면 얼마나 걸릴까요?
데이터 블렌딩 및 정리Re: 테이블 속도 향상/업데이트저희 측에서 낮은 우선 순위로 https://community.jmp.com/t5/JMP-Wish-List/Speed-up-Tables-Update/idc-p/653334/highlight/true#M4531 의 아이디어에 따라 해결책을 구현했습니다.