가져온 json 파일/jmp 연관 배열에서 변수를 설정하는 방법은 무엇입니까?안녕 모두,
저는 Application Builder를 사용하여 Python 통합으로 데이터 분석을 위한 도구를 개발하고 있습니다. 나중에 다시 업로드하고 동일한 데이터 전처리를 수행하려는 경우 사용자의 매개 변수 선택을 내보내는 버튼을 만들었습니다. 현재 매개변수를 내보내는 방법은 먼저 매개변수를 csv로 스크립팅(Save Text File(...) 사용)한 다음 jmp 테이블로 열 수 있고 거기에서 두 열(변수 및 값)을 연관 배열로 설정하고 백엔드 애플리케이션에서 사용할 수 있도록 JSON 파일로도 저장합니다. 내보낸 jmp 테이블이 어떻게 생겼는지에 대한 그림을 포함했습니다(변수 9 및 10의 경우 선택에 따라 하나, 둘 또는 세 개의 추가 변수가 있을 수 있으므로 테이블(및 연관 배열/json)은 항상 같은 크기. 일부 값은 문자열이고 다른 값은 숫자입니다.
내 질문은 변수가 해당 값으로 적절하게 설정되고 나중에 계산에 사용될 수 있도록 이러한 매개 변수(바람직하게는 jmp 테이블과 JSON 파일 모두에서)를 가장 잘 다시 업로드할 수 있는 방법입니다. Associative Arrays에서 For Each(...)를 가지고 놀았지만 변수를 제대로 설정할 수 없었습니다. 이것은 매개변수를 저장하는 가장 간단한 방법은 아니지만 jmp 테이블로 직접 전송되도록 적절하게 스크립팅된 변수와 값을 가져오는 방법을 알 수 없었습니다. 매개변수를 저장하는 데 현재 사용하고 있는 방법이 내 목적에 적합하지만 다른 방법이 있거나 csv/테이블의 구조/레이아웃을 변경하면 매개변수를 더 쉽게 업로드할 수 있는 경우 제안을 받을 수 있습니다.
도움을 주셔서 감사합니다.
스크립팅Re: 가져온 json 파일/jmp 연관 배열에서 변수를 설정하는 방법은 무엇입니까?다시 한 번 감사드립니다. @Craige_Hales ! 도움이 되는 포스팅입니다. 약간 부피가 클 수 있지만 모든 키 조합을 나열하고 해당 방법을 사용하여 작동시킬 수 있어야 합니다.
Re: 가져온 json 파일/jmp 연관 배열에서 변수를 설정하는 방법은 무엇입니까?연관 배열의 기본값을 사용하거나 키를 사용하기 전에 키가 존재하는지 명시적으로 테스트할 수 있습니다.
보다 @jthi 댓글 연관 배열: Try(), Contains() 또는 기본값?.가능한 모든 조합을 나열할 수 있을 만큼 키 세트가 작습니까? 아니면 예측할 수 없고 새 변수를 만들어야 하는 집합입니까?
Re: 가져온 json 파일/jmp 연관 배열에서 변수를 설정하는 방법은 무엇입니까?답장을 보내 주셔서 감사합니다! Associative Array 조회가 매우 간단하고 올바른 구문을 시도하지 않았다고 생각했습니다.
여전히 문제가 있지만... 내 변수 중 두 개에 대해 몇 가지 다른 옵션(variable1의 이름은 "var1option1", "var1option2" 등...)이 있으며 모든 다른 옵션에는 각각 특정 변수에 대해 하나, 둘 또는 세 개의 추가 변수가 있을 수 있습니다. 옵션 선택. 이러한 변수 이름은 모두 다릅니다. 선택이 무엇인지 미리 알지 못한 채 이러한 매개변수를 언로드하는 방법이 있습니까?
이 시나리오에서와 같이 "var1option1"이 존재하거나 "var1option2"... 둘 다 존재하지는 않지만 미리 알 수 있는 방법이 없으며 이 스크립트는 가능한 모든 시나리오에서 작동해야 합니다. 연관 배열에 변수 이름이 없을 때 오류를 방지하는 방법이 있습니까? If 문을 사용해야 할 것 같습니까?
var1option1 = restoredVariables["var1option1"];
var1option1sub1 = restoredVariables["var1option1sub1"];
var1option1sub2 = restoredVariables["var1option1sub2"];
var1option1sub3 = restoredVariables["var1option1sub3"];
var1option2 = restoredVariables["var1option2"];
var1option2sub1 = restoredVariables["var1option2sub1"];
var1option2sub2 = restoredVariables["var1option2sub2"];
다시 한번 감사합니다!
Re: 가져온 json 파일/jmp 연관 배열에서 변수를 설정하는 방법은 무엇입니까?동일한 데이터의 여러 표현을 디스크에 보관하지 마십시오. Python과 JSON이 이미 혼합되어 있으므로 디스크 형식으로 JSON을 권장합니다. 다음은 두 가지 예입니다. 첫 번째는 JMP에서 연관 배열을 선호한다고 가정하고 두 번째는 데이터 테이블을 가정합니다. 이름이 더 잘 작동하기 때문에 첫 번째 이름에 의지합니다(아래).
// 1st example using Associative Array
variables = ["nThings" => 3,
"type" => "favs",
"things" => {"raindrops", "whiskers", "kettles"}];
filename = Save Text File( "$temp/variables.json", As JSON Expr( variables ) );
restoredVariables = Parse JSON( Load Text File( filename ) );
// this is not needed unless you want to compare the restored data to the original...
If( variables == restoredVariables,
Write( "\!nGood restore\!n" ),
Write( "\!nRestore does not match\!n" )
);
Show( variables, restoredVariables );
// 2nd example, using data table
dt = New Table( "variables",
New Column( "key", "character", values( variables << getkeys ) ),
New Column( "val", "expression", values( variables << getvalues ) )
);
dt << save( "$temp/table.json" );
dtRestored = Open( "$temp/table.json" );
dtRestored:val << datatype( "expression" );
// this is not needed, unless you want to compare the restored table to the original...
ok = (dt << Compare Data Tables( showwindow( 0 ), Unlink All, Link( {"key", "key"} ), Link( {"val", "val"} ) )) << Compare with( dtRestored );
Write( "\!n\!nData table on disk:\!n", Load Text File( "$temp/table.json" ) );
If( ok,
Write( "\!ntables match" ),
Write( "\!nhmmm, tables are different" )
);
연관 배열을 사용하면 조회가 간단합니다.
type = restoredVariables["type"];
"즐겨찾기"
Re: 가져온 json 파일/jmp 연관 배열에서 변수를 설정하는 방법은 무엇입니까?다음은 내가 하려는 작업을 설명하는 매우 간단한 예입니다(.json 파일 사례가 아닌 연관 배열 사례의 경우).
AA = Associative Array();
AA["One"] = {1, 2, 3};
AA["Two"] = {"a", "b", "c"};
key_list = AA << Get Keys();
val_list = AA << Get Values();
For(i=1, i<=N Items(key_list), i++,
key_list[i] = val_list[i];
Show(key_list[i]);
);
이에 대한 로그 출력은 다음과 같습니다.
// key_list[i] = {1, 2, 3};
// key_list[i] = {"a", "b", "c"};내가 원하는 결과는 어디에 있습니까?
// One = {1, 2, 3};
// Two = {"a", "b", "c"};이것이 내가 원하는 방식으로 작업하는 데 매우 근접한 것 같지만 그런 운이 없습니다!
감사해요!