XML をデータテーブルに直接インポートする<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、
(整形式の) XML からデータ セットをデータ テーブルに直接インポートしたいと考えています。 これは Excel でできることなので、JMP でもできるはずです。 XML と最終的なデータ テーブルは以下の例のようになります。個々のピンの結果を含む一連のテストがあり、ダイに関連付けられ、ロット全体の一部であり、テスターや X、Y 座標などの属性が関連付けられています (ご想像のとおり、これは半導体テスト データに基づいています!)。 。 データセットは非常に長くなる可能性があります。
Parse XML JSL 関数があることは知っていますが、この状況でそれを実装する方法がわかりません。 ご提案をお待ちしております。
ありがとう、マシュー。
<最終テスト>
<ロット Lot_id="BLAH" tester_type="J750">
<ダイ die_id="1" die_x="1" die_y="1">
<テスト テスト名="TEST1" ユニット="A">
<ピン pin_name="ABC" result="1234" />
<ピン pin_name="DEF" result="2345" />
<テスト テスト名="TEST2" ユニット="A">
<ピン pin_name="XCV" result="414" />
<ピン pin_name="VBN" result="1351" />
<ダイ die_id="2" die_x="3" die_y="4">
<テスト テスト名="TEST1" ユニット="A">
<ピン pin_name="ABC" result="5433" />
<ピン pin_name="DEF" result="4321" />
<テスト テスト名="TEST2" ユニット="A">
<ピン pin_name="XCV" result="6856" />
<ピン pin_name="VBN" result="5345" />
| ロットID | テスターの種類 | ダイID | ダイ_x | 死ぬ | テスト名 | ユニット | ピン名 | 結果 |
| ああ | J750 | 1 | 1 | 1 | テスト1 | あ | ABC | 1234 |
| ああ | J750 | 1 | 1 | 1 | テスト1 | あ | 守備 | 2345 |
| ああ | J750 | 1 | 1 | 1 | テスト2 | あ | XCV | 414 |
| ああ | J750 | 1 | 1 | 1 | テスト2 | あ | VBN | 1351 |
| ああ | J750 | 2 | 3 | 4 | テスト1 | あ | ABC | 5433 |
| ああ | J750 | 2 | 3 | 4 | テスト1 | あ | 守備 | 4321 |
| ああ | J750 | 2 | 3 | 4 | テスト2 | あ | XCV | 6856 |
| ああ | J750 | 2 | 3 | 4 | テスト2 | あ | VBN | 5345 |
Re: XML をデータ テーブルに直接インポートするこんにちは、これを書いたときにエラーが発生しました
XMLを解析する( Qasファイル、
要素上( 「インジケーターグループ」 、
開始タグ(
dt =新しいテーブル( 「テストJMPTテーブル」 ) ;
dt <<新しいコラム( 「ん」 、数値) ;
dt <<新しいコラム( 「グラフィックスファイル」 、キャラクター) ;
dt <<新しいコラム( "説明" 、キャラクター) ;
)) ;
行= 1 ;
要素上( 「ん」 、
開始タグ(
もし(行> 0 、 dt <<アドロウズ( 1 )) ;
カラム( dt 、 「ん」 )[行()] = XML 属性( 「ん」 ) ;
)) 、
終了タグ()
) ;
Re: XML をデータ テーブルに直接インポートするXML に興味がある人のために (最近ますます登場しているようです)、XML インポート ウィザードが JMP 15 で活発に開発中であることを報告できます。 ポイントアンドクリックで選択できるため、JMP が XML の適切な形式を認識できるようになります。 JMP 15は2019年秋に出荷される予定です。
Re: XML をデータ テーブルに直接インポートするLoad Text File() は、XML およびその他のテキスト ファイルの Open() の代替手段です。Re: XML をデータ テーブルに直接インポートする素晴らしい例です。これは、スクリプト ガイドやスクリプト インデックスよりもはるかに理解しやすいことがわかりました。ありがとう!
Re: XML をデータ テーブルに直接インポートするこんにちは、スタンさん
あなたが JMP の人だとは知りませんでしたが、今ではあなたの名前の下に小さな JMP アイコンが表示されているので、それがわかります
ご協力に改めて感謝いたします。今後の機能強化としてこれを提案させていただきます。
よろしく、
マシュー。
Re: XML をデータ テーブルに直接インポートするマット、
素晴らしい!お役に立ててうれしいです。当社のサポート チームは素晴らしく、お客様からの質問やコメントがいつでもサポートする準備ができています。
JMP の将来のリリースに機能を追加する最善の方法は、リクエストを直接送信することです。 support@jmp.com 。
乾杯、
スタン
Re: XML をデータ テーブルに直接インポートするこんにちは、ピーターさん
ありがとう。この例がお役に立ててうれしいです。スクリプトインデックスの例を使用して実装を適用しました。スクリプトインデックスで「XML」を検索すると、いくつかの結果が返されました。
追加の例を追加するためにドキュメントを更新するようリクエストを送信します。
乾杯、
スタン
Re: XML をデータ テーブルに直接インポートするスタン、これは PARSE XML の非常に素晴らしい使用例です。どこかに文書化されていますか?JMP 11 のオンライン ヘルプやスクリプト本ではあまり情報が見つかりませんでした。
Re: XML をデータ テーブルに直接インポートするこんにちは、スタンさん
それはうまくいきました、ありがとう! JSL がどのように機能するかを完全に理解するために、実際に試してみます。
JMP の誰かがこれを読んでいる場合に備えて、(データの構造や深さを知らなくても) 整形式の XML データ ファイルをデータ テーブルに直接インポートするオプションは便利な追加です。 これは実現可能ですか、それとも可能ですか?
ありがとう、
マシュー。
Re: XML をデータ テーブルに直接インポートするこんにちは、マットさん
JMP には現在、「ファイルを開く」ダイアログを使用して XML ファイルを直接インポートする方法がありません。
ただし、JSL を使用してこのタスクを実行することもできます。
これを行う 1 つの方法の例については、以下を参照してください。
おそらく他の誰かがスクリプトを簡略化してより簡潔にすることができるでしょう。
乾杯、
スタン
// XML テキストを割り当てます
xmlTxtファイル= 「\[
<最終テスト>
<ロット Lot_id="BLAH" tester_type="J750">
<ダイ die_id="1" die_x="1" die_y="1">
<テスト テスト名="TEST1" ユニット="A">
<ピン pin_name="ABC" result="1234" />
<ピン pin_name="DEF" result="2345" />
<テスト テスト名="TEST2" ユニット="A">
<ピン pin_name="XCV" result="414" />
<ピン pin_name="VBN" result="1351" />
<ダイ die_id="2" die_x="3" die_y="4">
<テスト テスト名="TEST1" ユニット="A">
<ピン pin_name="ABC" result="5433" />
<ピン pin_name="DEF" result="4321" />
<テスト テスト名="TEST2" ユニット="A">
<ピン pin_name="XCV" result="6856" />
<ピン pin_name="VBN" result="5345" />
]\"
;
// XML を解析する
XMLを解析する( xmlTxtファイル、
// 新しいテーブルを作成します
要素上( "最終試験" 、
開始タグ(
dt =新しいテーブル( 「ウエハーステーブル」 、
// 新しい列を作成します
新しい列( 「ロットID」 、キャラクター) 、
新しい列( 「テスタータイプ」 、キャラクター) 、
新しい列( 「ダイID」 、数値) 、
新しい列( 「ダイX」 、数値) 、
新しい列( 「死ねY」 、数値) 、
新しい列( 「テスト名」 、キャラクター) 、
新しい列( 「ユニット名」 、キャラクター) 、
新しい列( 「ピン名」 、キャラクター) 、
新しい列( 「ピンの結果」 、数値) 、
) ;
行= 1 ;
) // 終了開始タグ、要素上の FinalTest
) 、
// 次の要素を取得します
要素上( "多く" 、
開始タグ(
もし(行> 0 、 dt <<行の追加( 1 )) ;
カラム( dt 、 「ロットID」 )[行()] = XML 属性( 「ロットID」 ) ;
カラム( dt 、 「テスタータイプ」 )[行()] = XML 属性( 「テスターの種類」 ) ;
) 、
終了タグ()
) 、
要素上( 「死ね」 、
開始タグ(
カラム( dt 、 「ダイID」 )[行()] =番号( XML 属性( 「ダイID」 )) ;
カラム( dt 、 「ダイX」 )[行()] =番号( XML 属性( 「ダイx」 )) ;
カラム( dt 、 「死ねY」 )[行()] =番号( XML 属性( 「死ね」 )) ;
)
) 、
要素上( "テスト" 、
開始タグ(
カラム( dt 、 「テスト名」 )[行()] = XML 属性( 「テスト名」 ) ;
カラム( dt 、 「ユニット名」 )[行()] = XML 属性( "ユニット" ) ;
)
) 、
要素上( "ピン" 、
開始タグ(
カラム( dt 、 「ピン名」 )[行()] = XML 属性( 「ピン名」 ) ;
カラム( dt 、 「ピンの結果」 )[行()] =番号( XML 属性( "結果" )) ;
) 、
終了タグ(
もし(行> 0 、 dt <<行の追加( 1 )) ;
)
)
) ;
// 余分な行を削除
番号= Nロウ( dt ) ;
dt <<行に移動(番号) ;
dt <<選択してください() ;
dt <<行の削除;
// 欠落している行の値を埋めます
各行について(
cr =行() ;
もし( cr != 1 、
もし( :ロットID == 「」 、 :ロットID =遅れ( :ロットID 、 1 ) 、 :ロットID = :ロットID ) ;
もし( :テスターの種類== 「」 、 :テスターの種類=遅れ( :テスターの種類、 1 ) 、 :テスターの種類= :テスターの種類) ;
もし(不足している( :ダイID ) == 1 、 :ダイID =遅れ( :ダイID 、 1 ) 、 :ダイID = :ダイID ) ;
もし(不足している( :ダイX ) == 1 、:ダイX =遅れ( :ダイX 、 1 ) 、 :ダイX = :ダイX ) ;
もし(不足している( :ダイY ) == 1 、 :ダイY =遅れ( :ダイY 、 1 ) 、 :ダイY = :ダイY ) ;
もし( :テスト名== 「」 、 :テスト名=遅れ( :テスト名、 1 ) 、 :テスト名= :テスト名) ;
もし( :ユニット名== 「」 、 :ユニット名=遅れ( :ユニット名、 1 ) 、 :ユニット名= :ユニット名) ;
) ;
) ;