JSL에서 우선 순위 유지안녕하세요,
일련의 제품에 대한 총 열 수를 생성하는 스크립트를 작성하려고 합니다. 홀수 열은 총 온스 수를 나타내고 짝수 열은 용기 수를 나타냅니다. 각 쌍을 곱하고 결과를 합산해야 합니다. 아래에 간단한 스크립트를 생각해 냈지만 열의 결과 수식에는 우선 순위를 유지하는 데 필요한 괄호가 포함되어 있지 않으며 열에 데이터가 없습니다. 분명히 나는 뭔가를 놓치고 있지만 무엇을 알아낼 수 없습니다. 샘플 데이터와 스크립트가 첨부되어 있습니다.
감사합니다!
dt = currentdatatable();
New Column( "DET Current Total TD", Numeric, "Continuous", Format( "Best", 12 ), Formula(
(:Name( "DET_P51_AMT_NEW_1. TD" ) * :Name( "DET_P51_AMT_NEW_2. TD" )) +
(:Name( "DET_P51_AMT_NEW_3. TD" ) * :Name( "DET_P51_AMT_NEW_4. TD" )) +
(:Name( "DET_P51_AMT_NEW_5. TD" ) * :Name( "DET_P51_AMT_NEW_6. TD" )) +
(:Name( "DET_P51_AMT_NEW_7. TD" ) * :Name( "DET_P51_AMT_NEW_8. TD" )) +
(:Name( "DET_P51_AMT_NEW_9. TD" ) * :Name( "DET_P51_AMT_NEW_10. TD" )) ));
Re: JSL에서 우선 순위 유지통계 섹션의 함수는 종종 누락된 값을 무시하지만 전부는 아닙니다. 한번 봐봐!
Re: JSL에서 우선 순위 유지진정해 빈스.머리를 단단히 고정해야 합니다.
SUM Dan에 대한 정보를 주셔서 감사합니다. 그 생각을 하지 않았다!
Re: JSL에서 우선 순위 유지이런 젠장, 이것은 내 머리를 폭발하게 만들었습니다.
누락 걱정 없는 다른 사업자가 있을까요?
위시리스트에!!
Re: JSL에서 우선 순위 유지예, 결국 "Sum"을 사용하여 수식을 만들었고 매력처럼 작동했습니다. 모두 감사합니다!
dt << New Column( "DET TOTAL CURRENT Ajax Powder",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
Sum(
:"DET_P1_AMT_NEW_1. Ajax Powder" * :"DET_P1_AMT_NEW_2. Ajax Powder",
:"DET_P1_AMT_NEW_3. Ajax Powder" * :"DET_P1_AMT_NEW_4. Ajax Powder",
:"DET_P1_AMT_NEW_5. Ajax Powder" * :"DET_P1_AMT_NEW_6. Ajax Powder",
:"DET_P1_AMT_NEW_7. Ajax Powder" * :"DET_P1_AMT_NEW_8. Ajax Powder",
:"DET_P1_AMT_NEW_9. Ajax Powder" * :"DET_P1_AMT_NEW_10. Ajax Powder"
)
)
);
Re: JSL에서 우선 순위 유지누락된 값을 처리하는 방법에 대한 훌륭한 스크립팅 예제입니다. 그러나 이를 처리할 함수가 있습니다: Sum.
합계 함수는 수식 편집기의 통계 그룹에서 찾을 수 있습니다.
Re: JSL에서 우선 순위 유지누락을 처리하는 또 다른 방법입니다.
그리고 자세히 설명하자면 누락된 값에 의해 연산(더하기, 빼기, 비교)되는 값은 일반적으로 누락된 결과를 반환합니다.
Names default to here(1);
dt = currentdatatable();
// get all rows as matrix
m = dt[0, {"DET_P51_AMT_NEW_1. TD", "DET_P51_AMT_NEW_2. TD"
, "DET_P51_AMT_NEW_3. TD", "DET_P51_AMT_NEW_4. TD"
, "DET_P51_AMT_NEW_5. TD", "DET_P51_AMT_NEW_6. TD"
, "DET_P51_AMT_NEW_7. TD", "DET_P51_AMT_NEW_8. TD"
, "DET_P51_AMT_NEW_9. TD", "DET_P51_AMT_NEW_10. TD"
}];
// set all the missing to a value, 0 in this case
m[Loc(ismissing(m))] = 0;
// reset the table to the matrix
dt[0, {"DET_P51_AMT_NEW_1. TD", "DET_P51_AMT_NEW_2. TD"
, "DET_P51_AMT_NEW_3. TD", "DET_P51_AMT_NEW_4. TD"
, "DET_P51_AMT_NEW_5. TD", "DET_P51_AMT_NEW_6. TD"
, "DET_P51_AMT_NEW_7. TD", "DET_P51_AMT_NEW_8. TD"
, "DET_P51_AMT_NEW_9. TD", "DET_P51_AMT_NEW_10. TD"
}]; = m;
dt <<NEW column=""></NEW>Re: JSL에서 우선 순위 유지이 코드는 아마도 더 효율적일 것입니다.
dt = currentdatatable();
col_list = {"DET_P51_AMT_NEW_1. TD", "DET_P51_AMT_NEW_2. TD",
"DET_P51_AMT_NEW_3. TD", "DET_P51_AMT_NEW_4. TD",
"DET_P51_AMT_NEW_5. TD", "DET_P51_AMT_NEW_6. TD",
"DET_P51_AMT_NEW_7. TD", "DET_P51_AMT_NEW_8. TD",
"DET_P51_AMT_NEW_9. TD", "DET_P51_AMT_NEW_10. TD"};
for (i = 1, i <= nitems(col_list), i++,
one_col = col_list[i];
missing_rows = dt << get rows where(is missing(as column(dt, one_col)));
if (nrows(missing_rows) > 0,
column(dt, one_col)[missing_rows] = 0;
);
);Re: JSL에서 우선 순위 유지모든 누락된 값 때문에 실패하고 있습니다.더 복잡한 수식을 작성하거나 누락된 값을 모두 0으로 변환할 수 있습니다.
dt = currentdatatable();
col_list = {"DET_P51_AMT_NEW_1. TD", "DET_P51_AMT_NEW_2. TD",
"DET_P51_AMT_NEW_3. TD", "DET_P51_AMT_NEW_4. TD",
"DET_P51_AMT_NEW_5. TD", "DET_P51_AMT_NEW_6. TD",
"DET_P51_AMT_NEW_7. TD", "DET_P51_AMT_NEW_8. TD",
"DET_P51_AMT_NEW_9. TD", "DET_P51_AMT_NEW_10. TD"};
for (i = 1, i <= nitems(col_list), i++,
one_col = col_list[i];
for (k = 1, k <= nrows(dt), k++,
if (is missing(column(dt, one_col)[k]),
column(dt, one_col)[k] = 0;
);
);
);Re: JSL에서 우선 순위 유지물론, 붙어 있습니다. 도와 주셔서 감사합니다!
Re: JSL에서 우선 순위 유지JMP는 괄호가 불필요했기 때문에 제거했습니다. 우선 순위는 곱셈이 먼저이고 그 다음이 덧셈입니다.그것은 당신의 괄호가 어떻게 가는지 따릅니다.나는 작은 테이블을 시도했고 숫자를 확인했습니다.
테이블을 부착할 수 있습니까?프로젝트 파일이 존재하지 않는 파일을 찾았습니다.
Re: JSL에서 우선 순위 유지감사합니다. 시도했지만 여전히 괄호가 사라집니다.
:DET_P51_AMT_NEW_1. TD * :DET_P51_AMT_NEW_2. TD + :DET_P51_AMT_NEW_3. TD * :DET_P51_AMT_NEW_4. TD +
:DET_P51_AMT_NEW_5. TD * :DET_P51_AMT_NEW_6. TD + :DET_P51_AMT_NEW_7. TD * :DET_P51_AMT_NEW_8. TD +
:DET_P51_AMT_NEW_9. TD * :DET_P51_AMT_NEW_10. TD
Re: JSL에서 우선 순위 유지괄호는 괜찮아 보입니다.테이블에 메시지를 보내야 합니다.
dt = currentdatatable();
dt << New Column( "DET Current Total TD", Numeric, "Continuous", Format( "Best", 12 ), Formula(
(:Name( "DET_P51_AMT_NEW_1. TD" ) * :Name( "DET_P51_AMT_NEW_2. TD" )) +
(:Name( "DET_P51_AMT_NEW_3. TD" ) * :Name( "DET_P51_AMT_NEW_4. TD" )) +
(:Name( "DET_P51_AMT_NEW_5. TD" ) * :Name( "DET_P51_AMT_NEW_6. TD" )) +
(:Name( "DET_P51_AMT_NEW_7. TD" ) * :Name( "DET_P51_AMT_NEW_8. TD" )) +
(:Name( "DET_P51_AMT_NEW_9. TD" ) * :Name( "DET_P51_AMT_NEW_10. TD" )) ));