안녕,
200개 이상의 열이 있는 대용량 테이블을 반환하는 데이터베이스 쿼리가 있는데, 작업하기 전에 정리하고 싶습니다.
각 열에는 라만, XRD, XRF, BET, PSA 등과 같은 계측 도구 출처를 나타내는 초기 용어가 있습니다.
각 용어에 대해 그룹을 만들고 위 목록에 있는 이름을 그룹 이름으로 사용하고 싶습니다.
예를 들어 Raman이라는 용어로 시작하는 열이 20개 있는데, 이를 모두 그룹화하고 싶습니다.
어떻게 스크립팅해야 하나요? Name starts with("Raman")를 사용하여 목록을 만들려고 했지만 빈 목록이 반환되는 것 같습니다.
참고로: ChatGPT에 물어봤지만 소용없었습니다.
앤디
이는 부분적으로 귀하의 데이터에 따라 달라지지만 일반적인 아이디어는 일반적으로 다음과 같습니다.
- 열 목록을 받으세요
- 적절한 그룹으로 열을 수집하는 동안 목록을 반복합니다.
- 적절한 그룹을 반복하고 열 그룹을 만듭니다.
루프를 위한 For Each(), 데이터 구조를 위한 Associative Array(), 그리고 그룹(또는 Word(1,...))을 확인하기 위한 Starts With()가 가능합니다.
제가 시작한 것은 바로 이 부분이고, 이건 효과가 없습니다.
Names Default to Here(1);
dt = Current Data Table();
CL = dt << Get Column Names();
Raman={};
For Each ( {value,index},CL,if(starts with(value,"Raman"),Raman<<INSERT item=""></INSERT>Next steps
Andy
몇 가지 질문:
- 모든 열을 그룹화하시겠습니까?
- 그룹을 구분하기 위한 밑줄(Raman_)과 같은 명확한 구분 기호가 열에 있습니까?
Names Default To Here(1);
dt = Current Data Table();
CL = dt << Get Column Names();
Raman = {};
For Each({value}, CL,
If(Starts With(value, "Raman"),
Insert Into(Raman, value);
);
);
dt << Group Columns("Raman", Raman);
그리고 내가 가지고 있는 예를 기반으로 한 전체 예
Names Default To Here(1);
dt = New Table("Untitled 2",
Add Rows(1),
Compress File When Saved(1),
New Column("Raman1", Numeric, "Continuous", Format("Best", 12), Set Values([.])),
New Column("Raman2", Numeric, "Continuous", Format("Best", 12), Set Values([.])),
New Column("XRD1", Numeric, "Continuous", Format("Best", 12), Set Values([.])),
New Column("Raman3", Numeric, "Continuous", Format("Best", 12), Set Values([.])),
New Column("XRD2", Numeric, "Continuous", Format("Best", 12), Set Values([.]))
);
collist = dt << Get Column Names("String");
aa_groups = Associative Array();
aa_groups["Raman"] = {};
aa_groups["XRD"] = {};
For Each({groupname}, aa_groups << get keys,
For Each({value}, collist,
If(Starts With(value, groupname),
Insert Into(aa_groups[groupname], value);
);
);
);
For Each({{groupname, cols}}, aa_groups,
dt << Group Columns(groupname, cols);
);
