안녕하세요,
테스터 스테이션에서 JSL 테이블을 가져왔습니다.
이 스테이션은 테스트 중인 장치의 구성 코드를 포함한 일부 속성과 메트릭을 보고합니다.
제 목표는 구성 코드를 기반으로 다른 테이블(구성 매트릭스)을 일부 범주 정보(구성 요소 공급업체 등)와 결합하는 것입니다.
불행히도 스테이션에서 보고한 구성 코드는 구성 매트릭스와 100% 일치하지 않습니다(대소문자 구분, 문자 누락, 추가 "-", ...)
저는 이 둘을 일치시킬 수 있는 견고한 방법을 찾고 싶었고, Regex 함수가 가장 좋다고 생각했지만, 조금 당황스러웠습니다.
이 포럼에서 이 기능에 대해 논의하는 게시물을 많이 살펴봤지만, 제 사용 사례와 비슷해서 시작하기에 적합한 사용 사례를 아직 찾지 못했습니다.
미리 도움을 주셔서 감사합니다
- 설교자
아래에는 일치시킬 2개의 열의 예가 나와 있습니다. 세 번째 열의 "-"를 substitute()로 제거하고 네 번째 열을 사용하여 비교했지만 대부분의 경우 일치가 약합니다.

New Table( "untitled 1",
Add Rows( 8 ),
New Column( "Tester config output",
Character,
"Nominal",
Set Values(
{"U4002LKR1B", "4005FGG1A", "U3001PL-2jR", "U5011G1A", "5001BLG1D",
"U5003R2A", "U4005BLG1B", "U6034UBLG2A"}
),
Set Display Width( 114 )
),
New Column( "config matrix name",
Character,
"Nominal",
Set Values(
{"U4002-LK-R1B", "U4005-FG-G1A", "U3001-PL-2JR", "U5011-G1A",
"U5001-BL-G1D", "U5003-R2A", "U4005-BL-G1B", "U6034-UBL-G2A"}
)
),
New Column( "Clean Config Matrix Name",
Character,
"Nominal",
Formula( Substitute( :config matrix name, "-", "" ) )
),
New Column( "Column 4",
Character,
"Nominal",
Formula( If( :Clean Config Matrix Name == :Tester config output, "Match" ) )
)
)
따라야 할 모든 규칙을 지정할 수 없다면 Choose Closest 함수(또는 Shortest Edit Script)와 같은 것을 사용하는 것이 좋습니다. 이 게시물은 JSL을 사용하여 Recode 플랫폼에서 "유사한 값 그룹화" 함수를 스크립트하는 몇 가지 아이디어를 제공할 수 있습니다.
당신이 하려는 일에 대해 내가 틀렸을 수도 있지만 이것은 할 수 있는 일의 단순화된 버전입니다.
Names Default To Here(1);
dt1 = New Table("Output",
New Column("Tester config output",
Character,
"Nominal",
Set Values(
{"U4002LKR1B", "4005FGG1A", "U3001PL-2jR", "U5011G1A", "5001BLG1D", "U5003R2A",
"U4005BLG1B", "U6034UBLG2A"}
)
)
);
dt2 = New Table("Config",
New Column("config matrix name",
Character,
"Nominal",
Set Values(
{"U4002-LK-R1B", "U4005-FG-G1A", "U3001-PL-2JR", "U5011-G1A", "U5001-BL-G1D",
"U5003-R2A", "U4005-BL-G1B", "U6034-UBL-G2A"}
)
),
New Column("R", Numeric, Nominal, Set Values(1::8))
);
Summarize(dt2, groups = By(:config matrix name));
dt1 << new column("N", Character, Nominal);
For Each Row(dt1,
:N = Choose Closest(:Tester config output, groups, Ignore Case(1), Ignore Whitespace(1), Ignore Nonprintable(1), Max Edit Count(2), Max Edit Ratio(0.1));
);
dt1 << Update(
With(dt2),
Match Columns(:N = :config matrix name),
Replace Columns in Main Table(None)
);
Write();
안녕하세요 Jarmo님,
귀하의 피드백에 감사드립니다.
더 큰 데이터 세트에서 이 스크립트를 시도해 보았는데 충분히 정확한 것으로 보이고, 96% 이상의 일치율을 보였습니다.
Choose Closest()의 인수에 "Replace Unmatched( 1 ), Unmatched (value= "NoMatch" )"를 추가하여 일치 항목이 없는 경우 플래그를 지정하도록 했습니다.
다시 한번 도움을 주셔서 감사합니다:)
설교자