상위 10개 합계별 그래프 빌더 막대 그래프 필터수평 누적 막대 그래프가 있고 Y축 범주별로 상위 10개 합계로 제한하고 싶습니다.
데이터에는 1년치 고객 주문이 있습니다.각 행은 고객, 값 및 고객 국가(다른 데이터 중에서)가 있는 주문 라인 항목입니다.x축은 주문 값의 요약 통계 합계입니다.y축은 고객 이름입니다.그리고 스태킹(오버레이)은 고객 국가별로 이루어집니다.
내 목표는 1,000명의 고객을 모두 표시하는 것이 아니라 전체 주문 금액을 기준으로 상위 10개 고객만 표시하는 것입니다.
현재 스크립트는 다음과 같습니다. 여기서 sales org. 고객 국가입니다
Graph Builder(
Size( 905, 603 ),
Variables(
X( :Total Dollars Ordered ),
Y(
:Customer,
Order By( :Total Dollars Ordered, Ascending, Order Statistic( "Sum" ) )
),
Overlay( :Sales Organization Code )
),
Elements(
Bar( X, Y, Legend( 4 ), Bar Style( "Stacked" ), Summary Statistic( "Sum" ) )
),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( "Total Dollars Ordered by Customer" )}
)
)
)Re: Graph Builder 막대 그래프 필터를 상위 10개 합계로 필터링여기 내가 끝내는 것이 있습니다.도와주셔서 감사합니다.
상위 20위가 더 멋져 보였습니다.
names default to here(1);
dt=current data table();
//Summarize the Total Dollars Ordered by Customer
dtSum = dt << Summary(
Group( :Customer ),
Sum( :Total Dollars Ordered ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" ),
Link to original data table( 0 )
);
//Sort the new data table
dtSum << sort( by(:Total Dollars Ordered), order(descending),replace table(1));
//Add Customer Sales Rank
//because the data is sorted the rank is the row number
dtSum << New Column("Customer Sales Rank", formula(Row()));
dtSum:Customer Sales Rank << delete property("formula");
dtSum << delete columns({"Total Dollars Ordered", "N Rows"});
//add the Customer Sales Rank back to the original data table
dt << Update(
With( dtSum ) ,
Match Columns( :Customer == :Customer )
);
//close the helper table
close(dtSum);
//Create the graph, horizontal bar graph, highest sales at the top,
dt << Graph Builder(
Size( 966, 804 ),
//hide the control panel
Show Control Panel( 0 ),
Variables(
X( :Total Dollars Ordered ),
Y(
:Customer,
Order By( :Total Dollars Ordered, Ascending, Order Statistic( "Sum" ) )
),
Overlay( :Sales Organization Code )
),
Elements(
Bar(
X,
Y,
Legend( 4 ),
Bar Style( "Stacked" ),
Summary Statistic( "Sum" ),
Label( "Label by Percent of Total Values" )
)
),
Local Data Filter(
//hide the local filer
Close Outline(1),
Add Filter(
columns( :Customer Sales Rank ),
Where( :Customer Sales Rank >= 1 & :Customer Sales Rank <= 20 )
)
),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( "Total Dollars Ordered by Customer" )}
)
)
)Re: Graph Builder 막대 그래프 필터를 상위 10개 합계로 필터링앗....내 실수....잡아서 다행이야!
Re: Graph Builder 막대 그래프 필터를 상위 10개 합계로 필터링문제는 "=="입니다. "=" 하나만 있으면 됩니다.Re: Graph Builder 막대 그래프 필터를 상위 10개 합계로 필터링나는 두 번째 접근 방식을 좋아합니다.스크립트는 코드의 첫 번째 섹션 직후에 중지되는 것 같습니다.
dtSum == dt << Summary(
Group( :Customer ),
Sum( :Total Dollars Ordered ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" ),
Link to original data table( 0 )
);
새 데이터 테이블을 가져오고 있지만 정렬되지 않고 순위가 없기 때문입니다. JSL의 다음 세트는 어느 것입니까?
Re: Graph Builder 막대 그래프 필터를 상위 10개 합계로 필터링상위 10위 안에 있는 고객만 있는 새 데이터 테이블을 만드는 것이 좋습니다.아래 스크립트는 하위 집합을 생성한 다음 데이터를 플로팅합니다.
names default to here(1);
dt=current data table();
dtSum == dt << Summary(
Group( :Customer ),
Sum( :Total Dollars Ordered ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" )
);
dtSum << sort( by(:Total Dollars Ordered), order(descending),replace table(1));
dtSum << select where(Row()>10);
dtSum << delete rows;
dtFinal = dt<< Join(
With( dtSum ),
By Matching Columns( :Customer = :Customer ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 )
);
dtFinal << Graph Builder(
Size( 905, 603 ),
Variables(
X( :Total Dollars Ordered ),
Y(
:Customer,
Order By( :Total Dollars Ordered, Ascending, Order Statistic( "Sum" ) )
),
Overlay( :Sales Organization Code )
),
Elements(
Bar( X, Y, Legend( 4 ), Bar Style( "Stacked" ), Summary Statistic( "Sum" ) )
),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( "Total Dollars Ordered by Customer" )}
)
)
);
귀하의 데이터 사본이 없었기 때문에 스크립트를 완전히 테스트하지는 않았지만 작동해야 한다고 생각합니다.
스크립트를 수정하여 요약 테이블의 주문 번호를 만든 다음 다시 원래 데이터 테이블에 조인하고 로컬 데이터 필터에서 사용하여 주문을 선택할 수도 있습니다.
다음은 로컬 데이터 필터를 사용하여 차트를 생성하는 방법에 대한 대략적인 스크립트입니다.
names default to here(1);
dt=current data table();
dtSum == dt << Summary(
Group( :Customer ),
Sum( :Total Dollars Ordered ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" ),
Link to original data table( 0 )
);
dtSum << sort( by(:Total Dollars Ordered), order(descending),replace table(1));
dtSum << New Column("Rank", formula(Row()));
dtSum:Rank << delete property("formula");
dtSum << delete columns({"Total Dollars Ordered", "N Rows"})
dt<< Update(
With( dtSum ) ,
Match Columns( :Customer == :Customer )
);
dt << Graph Builder(
Size( 905, 603 ),
Variables(
X( :Total Dollars Ordered ),
Y(
:Customer,
Order By( :Total Dollars Ordered, Ascending, Order Statistic( "Sum" ) )
),
Overlay( :Sales Organization Code )
),
Elements(
Bar( X, Y, Legend( 4 ), Bar Style( "Stacked" ), Summary Statistic( "Sum" ) )
),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( "Total Dollars Ordered by Customer" )}
)
),
Local Data Filter(
Add Filter( columns( :Rank ), Where( :Rank >= 1 & :Rank <= 11 ) )
);