cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
Choose Language Hide Translation Bar
View Original Published Thread

録画とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Club

maria_astals
Staff

ビデオ 1 @ゲオルグからのデータ アクセス

Feb 2025_Data Access.mp4
Video Player is loading.
Current Time 0:00
Duration 0:00
Loaded: 0%
Stream Type LIVE
Remaining Time 0:00
 
1x
    • Chapters
    • descriptions off, selected
    • captions off, selected


      コメント:

      • ドキュメントはまだ不足しており、使い方が少し面倒ですが、それでも推奨される方法であり、コネクタをサポートするので、使用することをお勧めします。
      • 実行完了時にアクセスできる queryResult「シンボル」もあり、これは結果のテーブルへの参照になりますhttps://www.jmp.com/support/help/en/18.1/#page/jmp/sql-functions.shtml
      • 常にどちらかを使用してください< << run foreground and do not rely on which is determined by user preferences< pan>

      undefined

      ビデオ 2: JMP ロースト、 フォロー

      Feb 2025_Roasting.mp4
      Video Player is loading.
      Current Time 0:00
      Duration 0:00
      Loaded: 0%
      Stream Type LIVE
      Remaining Time 0:00
       
      1x
        • Chapters
        • descriptions off, selected
        • captions off, selected


          コメント:

          • スクリプト インデックスで、新しいウィンドウ コマンドがさまざまなモードでどのように機能するかを確認することをお勧めします。ほとんどのバリアント (モーダル、レポートなど) の例があります。
          • 同意します。そこには例があります。しかし、必ずしも私が望むほど役に立つわけではありません。NewWindow() を使用するたびに、類似の例がない何かを行いたいのです。コミュニティを検索しているときに、NewWindow() の非常に役立つ例を見つけました。
          • 例を追加する機能も追加してください。コミュニティには非常に役立つ例があります。すべての例をスクリプト インデックスに詰め込むのは意味がないと思います。しかし、私たちのスクリプト インデックスに役立つ例を追加できると、非常に役立ちます。

          Video 3: Tips and Tricks from フォロー

          Feb 2025_Tips and Tricks.mp4
          Video Player is loading.
          Current Time 0:00
          Duration 0:00
          Loaded: 0%
          Stream Type LIVE
          Remaining Time 0:00
           
          1x
            • Chapters
            • descriptions off, selected
            • captions off, selected


              提案については投稿してください: https://community.jmp.com/t5/JMP-Scripters-Club-Discussions/Collection-of-good-valuable-scripting-examples-the-scripters/mp/842828#M215


              この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

              8 REPLIES 8
              jthi
              Super User

              Re: 録音とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Club

              私の資料を添付しました

              この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

              matth1
              Level IV

              Re: 録音とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Club

              非常に役立つプレゼンテーションをありがとうございましたフォロー ! 動的に作成されたモーダル ウィンドウを書き直して文字列の使用を避け、結果を抽出するために XPath メソッドを使用するようにインスピレーションを受けました。


              ただし、文字列の解析を避けられないことが 1 つありました。モーダル ウィンドウ内に XPath コマンドを含めたいのですが、動的に作成する必要があります。


              テキスト編集ボックスを有効にするかどうかを制御するチェック ボックスを作成したいのですが、テキスト編集ボックスとチェック ボックスのペアがいくつあるかわかりません。

              rc_list = Lineup Box( N Col( 3 ) );
              rc_list << append( Text Box( "Current", <

              Is there a way of doing this so I don't need to parse JSL strings? Or is there a better way to do this modal recode?

              完全なコードはここにあります:もっと見る...(ハイライトして読んでください)Names Default To Here( 1 ); // Function to do a simple in-place column recode. // Uses a modal dialog so can be used as part of a larger script or workflow. modal_recode = Function( {dt, col}, {default local}, Summarize( dt, orig_vals = By( col ) ); rc_list = Lineup Box( N Col( 3 ) ); rc_list << append( Text Box( "Current", <<code class=" language-jsl"><div class="lia-spoiler-noscript-container"><div class="lia-spoiler-noscript-content">名前のデフォルトは Here( 1 ); // 単純なインプレース列再コーディングを実行する関数。 // モーダルダイアログを使用するため、より大きなスクリプトまたはワークフローの一部として使用できます。 modal_recode = Function( {dt, col}, {default local}, Summarize( dt, orig_vals = By( col ) ); rc_list = Lineup Box( N Col( 3 ) ); rc_list &lt;&lt; append( Text Box( "Current", &lt; <set font=""></set></div></div></code>

              この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

              jthi
              Super User

              Re: 録音とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Club

              この場合は << XPath ではなく、この << prev sib を使用します。これで目的の結果が得られると想定しています。

              だから、

              Eval(
              	Parse(
              		"\[rc_list << append( check box( "", <
              このようなこともできます
              rc_list << Append(Check Box("", << Set Function(function({this},
              	(this << prev sib) << Enabled(this << get);
              ))));

              完全なコード

              もっと見る...
              Names Default To Here(1);
              
              // Function to do a simple in-place column recode. 
              // Uses a modal dialog so can be used as part of a larger script or workflow.
              modal_recode = Function({dt, col},
              	{default local}, 
              	
              	Summarize(dt, orig_vals = By(col));
              
              	rc_list = Lineup Box(N Col(3));
              	rc_list << append(Text Box("Current", <

              本当にXPathを使いたいのであれば、インデックスを動的に計算することができます。例えば、すべてのCheckBoxBoxを取得し、 Containsを使ってインデックスを取得し、そのインデックスを使うことができます。

              idx = Contains(rc_list << XPath("//CheckBoxBox"), this);

              この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

              matth1
              Level IV

              Re: 録音とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Club

              @jthi さん、ありがとうございます。以前の sib アプローチは私には有効です。JMP ウィンドウの構築方法と操作方法についての私の自然な考え方を変える必要があります。

              この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

              jthi
              Super User

              Re: 録音とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Club

              私はこれまで何度も考え方を変えてきましたし、今でも時々変えています。私は一般的に、状況に応じて 4 つの異なる方法 (およびそれらの組み合わせ) を使用していると思います。

              • XPath
                • ボタンを押すだけで複数の項目から結果を収集したい場合
              • リスト/連想配列への参照を収集する
                • オブジェクトへの参照を収集するのは簡単な場合もあります
              • << 関数を設定します(function(this()))
                • 通常は、enable(0/1)のように、いくつかのアクションを制御します。通常、これで変数の値を更新しません。
              • 参照評価
                • 具体的な例はありませんが、何らかの理由で XPath で「パス」を構築したり、これを使用したりするのが面倒になり、参照が必要な場合 (新しいウィンドウを返すクラスや関数の場合など) が考えられます。

              参考評価例


              rc_list << append(teb = Text Edit Box(Char(orig_vals[i]), <


              この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

              Ressel
              Level VI

              Re: 録音とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Club

              素晴らしい! 2023 年の開始以来、これらのセッションがすぐに役立つ知識の源であり続けているのは驚くべきことです。


              Open Database() JSL 関数内の SQL に関する意見があるかどうか疑問に思っています。私たちは、データ ウェアハウス用に Google の BigQuery の実装を使用しています。BigQuery 内では、以下に示すように、Open Database() に直接コピー アンド ペーストできる SQL クエリを開発およびデバッグできます。SQL キーワードまたはタイムスタンプを SQL に連結する機能も非常に便利に思えます。

              Names Default to Here(1);
              
              start = "'2025-02-18 00:00:00'"; 
              stop = "'2025-02-18 01:00:00'";
              
              dt = Open Database( "DSN_name", "
              
              	SELECT 
              		time,
              		tagname,
              		value
              	  
              	FROM 
              		`bq_project.dataset.table`
              
              	WHERE 
              		time BETWEEN TIMESTAMP("|| start ||") AND TIMESTAMP("|| stop ||")
              	  
              	AND tagname IN(
              		'tag_1',
              		'tag_2' 
              		)"
              );

              この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

              jthi
              Super User

              Re: 録音とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Club

              新しい SQL クエリを使用し (これはかなりひどい方法だとは思いますが、推奨される方法です)、SQL テンプレートを利用してから、Eval Insert を使用して評価することをお勧めします。以下に例を示します。

              Names Default to Here(1);
              
              MY_CONNECTOR = "ODBC:...";
              
              start = "'2025-02-18 00:00:00'"; 
              stop = "'2025-02-18 01:00:00'";
              
              sql_template = "\[
              SELECT 
              	time,
              	tagname,
              	value  
              FROM 
              	`bq_project.dataset.table`
              WHERE 
              	time BETWEEN TIMESTAMP(¤start¤) AND TIMESTAMP(¤stop¤)
              AND tagname IN(
              	'tag_1',
              	'tag_2' 
              	)
              ]\";
              
              sql_str = Eval Insert(sql_template, "¤");
              
              // Write("\!N", sql_str);
              
              obj = New SQL Query(
              	Connection(MY_CONNECTOR),
              	Custom SQL(sql_str),
              	Query Name("mytable")
              );
              dt = obj << Run Foreground();
              
              Write();

              新しい SQL クエリ以外のメソッド (Open Database() など) にも同様のテンプレートのアイデアを使用できます。


              Eval Insert() で特殊文字 "¤" を使用するのは、デフォルトの "^" が Regex などでよく見られ、評価中に問題が発生するためです。


              編集: いくつかのタイプミスを修正し、言語を改善し、「¤」についてのコメントを追加しました

              この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

              Ressel
              Level VI

              Re: 録音とファイル: データ アクセス、JMP ロースト、ヒントとコツに関する Scripters Club

              1 回の返信で与えられる称賛には限りがあります。 @jthi さん、本当にありがとうございます。

              この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。