<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
こんにちは、
この問題は本当に私を困惑させます。
連結を作成したいのですが、1 つのテーブル (dt2) に、最初のテーブル (dt1) にすでにあるいくつかのエントリもあります。 最初のデータテーブル(dt1)にあるものを保持し、2番目のもの(dt2)でそれらを削除したい。
私はすでに試みましたが、select where を使用して別の問題を抱えており、連結する前に 2 番目のテーブルの重複を削除しました。 すべての重複のリストがありますが、そのリストを select where 句やデータ フィルターの変数として使用することはできません
Summarize( a = by(column(dt, "band")),c=count );
変数は次のようになります。
a = {"2_12_000264_0_9"、"2_12_000265_0_1"、"2_12_000267_0_3"、"2_12_000269_1_3"、"2_12_000269_2_1"、"2_12_000270_1_7"、"2_12_000270_02_15" 1"、"2_12_000272_1_9"、"2_12_000272_2_7"、"2_12_000273_1_1"、"2_12_000273_2_8" 、「2_12_000274_0_4」、「2_12_000275_1_3」、「2_12_000275_2_1」、「2_12_000276_1_4」、「2_12_000276_2_2」};
および完全なデータ フィルター:
dt2 << Data Filter( Add Filter( columns( :Bandname ), Where( :Bandname == {"2_12_000264_0_9", "2_12_000265_0_1", "2_12_000267_0_3", "2_12_000269_1_3", "2_12_000269_2_1", "2_12_000270_1_7", "2_12_000270_2_5", "2_12_000271_0_1", "2_12_000272_1_9", "2_12_000272_2_7", "2_12_000273_1_1", "2_12_000273_2_8", "2_12_000274_0_4", "2_12_000275_1_3", "2_12_000275_2_1", "2_12_000276_1_4", "2_12_000276_2_2"}), Display( :Bandname, Size( 221, 259 ), List Display ), Mode( Show( 1 ) ) ));
しかし、変数の使用は機能しません:
Add Filter( columns( :Bandname ), Where( :Bandname == a ), Display( :Bandname, Size( 221, 259 ), List Display ), Mode( Show( 1 ) ) ));
なぜ??
しかし、主な問題は上記の問題であり、連結する前に重複を削除します。
前もって感謝します
どうもありがとう、これはうまくいきます...そしてあなたの最初のコードはjslを理解するのに本当に良いです
理由はわかりませんが、クリアテキスト リストが完全に評価されている場合でも、JSL がリスト変数を解決しない場合があります。
これを回避する 1 つの方法は、式を使用し、評価の前に解析済みのリストをそれに代入することです。 データ フィルタの例を次に示します。
dt =開ける( "$ENGLISH_SAMPLE_DATA/Big Class.jmp" ) ;
a = { 「ケイティ」 、 「ヘンリー」 、 「ロバート」 } ;
df_expr =式( dt <<データフィルター(フィルタを追加(列( :名前) 、どこ( :名前== a ) 、画面( :名前、リスト表示) ) ) ) ;
に代入( df_expr 、式( a ) 、パース(シャア(評価( a ) ) ) ) ;
評価( df_expr ) ;
ただし、リストに基づいて条件付きで行を選択するには、For Each Row() を使用してより効率的にスクリプト化することができます。 以下のコードの結果は、上記と同じになります (データ フィルター ウィンドウを除く)。
dt =開ける( "$ENGLISH_SAMPLE_DATA/Big Class.jmp" ) ;
a = { 「ケイティ」 、 「ヘンリー」 、 「ロバート」 } ;
行ごとに(行の状態(行() ) =選択された状態(含む( a 、 :名前[] ) ) )
重複する行が選択されたら、実行するだけですdt << 行を削除連結前。