Re: JSL 経由の仮想参加が機能しないJmp 17で修正されたようです。
Re: JSL 経由の仮想参加が機能しないありがとう@フェリと@ほぎこれについて調査するため。
ここでの重要な質問は次のとおりです。
単一のスクリプトを使用して、保存されていない 2 つのデータ テーブル間に有効なリンクを作成する方法は?
実際には 2 つの異なるスクリプトで可能ですが、1 つのスクリプトでは不可能です。 https://community.jmp.com/t5/Discussions/Setting-link-ID-in-jsl-seems-not-to-work-what-is-wrong/mp/598505
このスレッドの主なポイントは、「彼らは救われなければならない」ということです。
フォローアップの質問:
1 つのスクリプトではなく、クリックするだけで保存されていないテーブルにリンクできるのはなぜですか?
この問題 (バグだと思います) は対処されており、どこかで検討されていますか? 私にとって最初の質問は@フェリ解決されません。
Re: JSL 経由の仮想参加が機能しない興味深い質問です。
リンクの一意のファイル名を取得するために「ちょうど」必要なテーブルの保存ですか?
代わりに(フルパスなしで)データテーブル名を使用することは可能ですか?
この例では、参照テーブル (dt2) を dt1 に適切にリンクするには、最初に保存する必要があります
- dt3 の場合は、保存しなくても問題ありません。
テーブルを保存せずに、リンク ID (JSL スクリプトによって生成されたもの) を参照テーブルから削除し、手動で再度追加するだけで役立つ場合がありました。
jmp の動作がこのままの場合、「保存されていないデータ テーブルへのリンクは機能しません」などの警告メッセージを表示することは可能でしょうか?
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Data table summary
// → Data Table( "Big Class By (sex)" )
dt 2 = Data Table( "Big Class" ) << Summary(
Group( :sex ),
Median( :height ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 )
);
// Change column link ID: sex
dt2:sex << Set Property( "Link ID", 1 );
// uncomment this line to make the virtual link work table d1
//dt2 << save( "$desktop/summaryTable.jmp" );
// Change column link reference: sex
dt1:sex << Set Property(
"Link Reference",
Reference Table( dt2 )
);
dt3 = Eval(dt1 << getScript);
dt3:sex << Set Property(
"Link Reference",
Reference Table( dt2 )
);
Re: JSL 経由の仮想参加が機能しない今、私は少し混乱しています.JSLで仮想結合が機能しない大きな問題は、それが保存されていないことですか?
これには技術的な理由がありますか? - 仮想リンクは、手動で行うと保存されていないデータ テーブルに対して機能しますが、JSL では機能しませんか? 両者は別のことをしているのですか?
私の dt1 は、データをインポートして操作することによって作成されました。たとえば、json インポート ウィザードを使用して作成すると、変数 dt1 が異なるのはなぜですか? JMPで?
Re: JSL 経由の仮想参加が機能しないdt1 = Open( "$SAMPLE_DATA\Pizza Profiles.jmp" );
dt2 = Open( "$SAMPLE_DATA\Pizza Responses.jmp" );
dt1:ID << Set Property( "Link ID", 1 );
dt2:Choice << Set Property( "Link Reference", Reference Table( dt1 ) );
dt2:Choice1 << Set Property( "Link Reference", Reference Table( dt1 ) );
dt2:Choice2 << Set Property( "Link Reference", Reference Table( dt1 ) );
dist1 = dt2 << Distribution(
Nominal Distribution( Column( Referenced Column( "Cheese[Choice]", Reference( Column( :Choice ), Reference( Column( :Cheese ) ) ) ) ) ),
Nominal Distribution( Column( Referenced Column( "Cheese[Choice1]", Reference( Column( :Choice1 ), Reference( Column( :Cheese ) ) ) ) ) ),
Nominal Distribution( Column( Referenced Column( "Cheese[Choice2]", Reference( Column( :Choice2 ), Reference( Column( :Cheese ) ) ) ) ) )
);
動作する例を次に示します。これらは、dt1、dt2 スクリプトの概念を使用したサンプル データ テーブルです。 常に機能することを確認するための良い方法は、上記で提案されていることを実行し、リンクを作成する前に常にテーブルを保存することです。 この例では、これらはサンプルであるため、ここには保存されていません。
Re: JSL 経由の仮想参加が機能しない素晴らしい!
の緯度経度から Zip へのリバース ジオコーディングファイルも保存する必要がありました。ディスク ファイル名ではなくハンドルを使用できますが、ディスク ファイルが存在する必要があります。
1 blobdbf = za << read( "cb_2019_us_zcta510_500k.dbf", Format( blob ) );
2 tempfile = Save Text File( "$temp/cb_2019_us_zcta510_500k.dbf", blobdbf );
3 zipcodeNS:dtdbf = Open( tempfile, Add to Recent Files( 0 ), invisible );
4 zipcodeNS:dtdbf << save( "$desktop/cb_2019_us_zcta510_500kdbf.jmp" );
5 , //
6 zipcodeNS:dtshp = Open( "$desktop/cb_2019_us_zcta510_500kshp.jmp", Add to Recent Files( 0 ), invisible );
7 zipcodeNS:dtdbf = Open( "$desktop/cb_2019_us_zcta510_500kdbf.jmp", Add to Recent Files( 0 ), invisible );
8 );
9 zipcodeNS:dtdbf:shape << Set Property( "Link ID", 1 );
10 zipcodeNS:dtshp:shape << Set Property( "Link Reference", Reference Table( zipcodeNS:dtdbf ) );
3 行目は、非 JMP ファイルをテーブルとして開いています。
4 行目でテーブルを JMP ファイルとして保存するか、7 行目でディスクから再度開きます。
10 行目では、$desktop 名を明示的に使用せずに、dtdbf ハンドルからリンク参照を作成しています。
dtshp ファイルは、リンクを配置して再保存できますが、私はそれをしませんでした。 ファイルがこのスクリプトの外部で使用された場合に役立ちます。
Re: JSL 経由の仮想参加が機能しない秘密は、a) 両方のデータ テーブルを保存することと、b) Set Property( "Link Reference", Reference table() は、返信で述べたようにファイル名の参照でなければなりません。
理由はわかりませんが、私はそれを取るでしょう...
Re: JSL 経由の仮想参加が機能しないこれがうまくいくはずの例です。
JMP サンプル テーブルから 2 つのテーブルをクエリし、後でそれらを結合します。
他の人が言ったように、トラブルシューティングにはいくつかの問題があるかもしれません。おそらくログで何かを見つけることができます
- 参照されたテーブルを保存する必要があります
- 参照されるテーブルに重複があってはなりません
- 参照 (テーブル名、列名) は正しいですか?
- ...
両側のキーは、色が濃く、淡くならないようにする必要があります。 淡いということは、働いていないということです。
私もそれでいくつか問題がありましたが、うまくいきます。
// User Dialog for query from datatable (database)
/***************************************************************************/
// Initialization
/***************************************************************************/
Names Default To Here( 1 );
Clear Log();
// Query 1st table with filter conditions
dt_filter = New SQL Query(
Version( 130 ),
Connection( "JMP" ),
JMP Tables( ["Big Class" => "\C:\Program Files\SAS\JMPPRO\15\Samples\Data\Big Class.jmp"] ),
QueryName( "filter" ),
CustomSQL( "SELECT distinct t1.name, t1.age, t1.sex, t1.weight, t1.height FROM \!"Big Class\!" t1 where t1.sex = 'M' and t1.age<=13;" )
) << Run;
Summarize( name_lst = by( dt_filter:name ) );
dt_filter:name << set property("Link ID", 1);
dt_filter << save("$TEMP\dt_filter.jmp");
// (2) assign custom SQL,
Assign(
custom_sql,
"\[
SELECT t1.picture, t1.name, t1."sibling ages",
t1.sports, t1."countries visited", t1."family cars", t1."reported illnesses",
t1."age vector"
FROM "Big Class Families" t1
where t1.name in __NAMELIST__
;
]\"
);
// (3) Put namelist into custom_sql
Substitute Into( custom_sql, "__NAMELIST__", Substitute( Char( name_lst ), "{", "(", "}", ")" ) );
// (4) execute Query
dt_result = New SQL Query( Version( 130 ), Connection( "JMP" ),
, JMP Tables( ["Big Class Families" => "\C:\Program Files\SAS\JMPPRO\15\Samples\Data\Big Class Families.jmp"] ),
QueryName( "dt_result" ), CustomSQL( custom_sql ) )
<< Run;
dt_result << save("$TEMP\dt_result.jmp");
// (5) Connect both tables by symbolic link
dt_result:name << set property("Link Reference", Reference Table("$TEMP\dt_filter.jmp"));
Re: JSL 経由の仮想参加が機能しないまた、参加する前にテーブルを保存すると役立つ場合があります。
Re: JSL 経由の仮想参加が機能しない迅速な回答を求めているだけですが、dt2:LinkColumn の列プロパティの結果の定義を、インタラクティブに定義した場合と、スクリプト化に失敗した場合を比較しましたか?
参照テーブル引数が変数ではなくリテラル引数を期待していることを懸念しています。 については、このヘルプ エントリを参照してください。仮想結合のスクリプト.
JSL 経由の仮想参加が機能しないJMP コミュニティの皆様
仮想結合のために JSL 経由で 2 つのデータ テーブルをリンクしています。
dt1:Link_Column<< Set Property( "Link ID", 1 );
dt2:Link_Column << Set Property( "Link Reference", Reference table(dt1 ));
両方のテーブルと列情報にキーのシンボルが表示されているため、リンクは機能しているように見えますが、仮想結合された列が結合データ テーブルに表示されません。
まったく同じことを手動で実行して JMP をクリックすると、機能し、結合された列が表示されます。
仮想参加後に強制的にアップデートする方法はありますか?
データのブレンディングとクリーンアップマスカスタマイゼーション品質およびプロセスエンジニアリング