Calendar Box() - 日付範囲 - 日付/時刻の変換 - SQL[データベース]ご挨拶。
私の会社はついに JMP14 をリリースすることができたので、新しい機能を試すのがとても楽しみです。 具体的には、Semiconductor Take Kit と Calendar Box() 関数です。 したがって、私の最初のステップは、データ範囲から引き出された大量のデータを解析することです。 最終的に 3388594698 を実際の日付に変換することができました。出力の例を次に示します。
sqlstart = "01/18/2018 12:00:00 AM";
sqlend = "12/12/2018 1:25:05 PM";
ただし、データベースのタイムスタンプは 2018-10-28 16:59:03 のようにフォーマットされています。 Scripting Guide とこの Web サイトの投稿を使用してこれを解決しようとしましたが、役に立ちませんでした。 スクリプトの終了によりウィンドウが閉じられ、パート 2 として別のウィンドウが開きますが、ダッシュボードにすべてを保持する必要があります.. しかし、それが次のハードルです。
どんな助けでも大歓迎です。
d
Close All( Data Tables, No Save );
Close All( Reports );
Clear Log();
Close All( journals, no save );
Clear Symbols();
/******************************************************************************/
/* */
/* Brings in the list of wafers from the SQL Query [Current] */
/* */
/******************************************************************************/
testdata_HAY_QQ_LotList = Expr(
"
SELECT DISTINCT
t1.wafer_number,
t1.testdate
FROM tst_master t1
LEFT OUTER JOIN tst_dataset_header t2
ON ( t2.run_id = t1.run_id )
WHERE t1.testdate >= cast('2018-01-01' AS date) // Currently How I select a list of lots.
AND (t1.wafer_number NOT RLIKE '-ATL' )
ORDER BY t1.testdate DESC
"
);
/*******************************************************************************/
/* */
/* Brings in the list of wafers from the SQL Query [Desired with Caledar Box] */
/* */
/*******************************************************************************/
testdata_HAY_QQ_LotList = Expr(
"
SELECT DISTINCT
t1.wafer_number,
t1.testdate
FROM tst_master t1
LEFT OUTER JOIN tst_dataset_header t2
ON ( t2.run_id = t1.run_id )
WHERE (t1.testdate <= "||sqlstart||") // Varible from Date Selection
AND (t1.testdate >= "||sqlend||") // Varible from Date Selection
AND (t1.wafer_number NOT RLIKE '-ATL' )
ORDER BY t1.testdate DESC
"
);
/******************************************************************************/
/* */
/* LotList is used in the next step of the data pull selecting the wafers */
/* */
/******************************************************************************/
dt_LotList = Open Database( DATABASE, testdata_HAY_QQ_LotList, "LotList" );
Summarize( LotList = By( :wafer_number ) );
Close( dt_lotlist, No Save );
/******************************************************************************/
/* */
/* Start of Main Script [Calendar Box() to Select Wafer with Date Range] */
/* */
/******************************************************************************/
nw = New Window( "DATE SELECTION",
V List Box(
Align( Left ),
V List Box(
Spacer Box(
Size( 5, 15 )
),
Text Box(
"LOT DATE RANGE",
<< Set Font Name( "Segoe UI" ),
<< Set Font Style( "Bold" ),
<< Set Font Size( 12 ),
<< Justify Text( "Center" )
),
Spacer Box(
Size( 5, 20 )
),
H List Box(
Panel Box( "Select Start Date",
StartDate = Calendar Box(),
),
Spacer Box(),
Panel Box( "Select End Date",
EndDate = Calendar Box(),
)
),
Panel Box( "",
loadlot = Button Box( "LOAD LOT LIST",
<< Set Function(
Function(
{self},
sqlstart = MDYHMS( StartDate << Get Date()); // passed to database query
sqlend = MDYHMS( EndDate << Get Date()); // passed to database query
Show( sqlstart );
Show( sqlend );
self << close window;
)
)
)
)
)
)
);
date_start = Date MDY( 01, 1, 2018 );
StartDate << Date( date_start );
StartDate << Show Time( 0 );
StartDate << Min Date( Date Increment( Today(), "Day", -365, "Start" ) );
date_end = Date MDY( 01, 1, 2018 );
EndDate << Date( date_end );
EndDate << Show Time( 0 );
EndDate << Min Date( Date Increment( Today(), "Day", -365, "Start" ) );
Re: Calendar Box() - 日付範囲 - 日付/時刻の変換 - SQL[データベース]よろしければ、フォローアップの質問がいくつかあります
-接続文字列で提供されたコードでは、SQL NATIVE CLIENT に問題がありました。SQL NATIVE CLIENT が 32 ビット MySQL ドライバーにデフォルト設定されていることに気付きました。 当社のデータベースは 64 ビット ドライバーを使用しています。 オンラインで調べたところ、NATIVE CLIENT の代替品が見つかりませんでした。
- JMP にはテーブルを仮想的に結合し、すべての情報をテーブルに取り込まずに保存する機能がありますか? 4 つのメイン テストがあり、それらの 4 つのテスト内に 8 つのサブテストがあるため、サーバーに ping を実行してテーブルに取り込むと、1 つのウェーハに相当するデータの場合、約 61,000 行 x 24 列になります。 振り返ってみると、約 50 個のウェーハに相当するデータがあるため、データ セットがどれだけ大きくなるかがわかります。 Dashbord 関数を使用して、分析に必要なレポートをフィルタリングして生成したいと考えています。
いつものように、コミュニティからの助けとサポートに感謝しています。 これがわかりにくい場合は、お気軽にお問い合わせください。 テストの詳細をあまり明らかにしないように、かなりの数を変更しました
// 32bit SQL Driver
ev = Get Environment Variable( "computername" );
ConnectionString = "DRIVER=SQL NATIVE CLIENT; SERVER=***; DATABASE=***; Uid=***;Pwd=***" // Need 64 bit
Try(Close database connection(SQLConnection));
SQLConnection = Create database connection(ConnectionString);
// Main SQL Query that brings in all data for a wafer(s)
"
SELECT
CASE
WHEN t2.testname = TEST_1 THEN t3.ts
WHEN t2.testname = 'TEST_2' THEN t4.ts
WHEN t2.testname = 'TEST_3' THEN t5.ts
WHEN t2.testname = TEST_4' THEN t6.ts
END AS TimeStamp,
t1.wafer_number,
t2.die_id,
t2.run_id,
t2.rownum,
t2.colnum,
t2.subrow,
t2.subcol,
t2.part_number,
t2.testname,
t2.set_id,
t2.trmode,
t2.channel,
t2.teststate,
t2.refstate,
t2.attenstate,
t3.Supply_Name,
t3.Current,
CASE
WHEN t2.testname = 'TEST_2' THEN t4.INPUT / 1000000000
WHEN t2.testname = 'TEST_4' THEN t6.INPUT / 1000000000
END AS INPUT_1,
CASE
WHEN t2.trmode = 'TX' THEN t4.TEST_2d
WHEN t2.trmode = 'RX' THEN t4.TEST_2a
END AS TEST_2ad,
CASE
WHEN t2.trmode = 'TX' THEN t4.TEST_2a
WHEN t2.trmode = 'RX' THEN t4.TEST_2d
END AS TEST_2da,
CASE
WHEN t2.trmode = 'Tx' THEN t4.TEST_2b
WHEN t2.trmode = 'Rx' THEN t4.TEST_2c
END AS TEST_2cc,
t5.ErrorCount,
CASE
WHEN t2.trmode = 'Tx' THEN t4.TEST_2b
WHEN t2.trmode = 'Rx' THEN t4.TEST_2c
WHEN t2.testname = 'TEST_1' THEN t3.Current
WHEN t2.testname = 'TEST_3' THEN t5.ErrorCount
END AS TestOutput,
t6.INPUT,
t6.TEST_4a,
t6.TEST_4b
FROM tst_master t1
LEFT OUTER JOIN tst_dataset_header t2
ON ( t2.run_id = t1.run_id )
LEFT OUTER JOIN tst_vector t5
ON ( t5.header_id = t2.header_id )
LEFT OUTER JOIN tst_test_1 t3
ON ( t3.header_id = t2.header_id )
LEFT OUTER JOIN tst_test_2 t4
ON ( t4.header_id = t2.header_id )
LEFT OUTER JOIN tst_test_4 t6
ON ( t6.header_id = t2.header_id )
WHERE ((( t2.testname IN ('TEST_1', 'TEST_2, 'TEST_3', 'TEST_4' ))
AND ( t2.teststate IN ( '1' , '3', '0x0' ))))
AND (t2.set_id NOT LIKE '1140' )
AND (t2.set_id NOT LIKE '1240' )
AND (t2.part_number LIKE 'WAFER_1')
AND (t1.wafer_number IN ( "||LotListSQLString||" ) ) // derived from the previous script you provided in your last reply
"
Re: Calendar Box() - 日付範囲 - 日付/時刻の変換 - SQL[データベース]お手伝いいただきありがとうございます.. 魅力のように機能します。
Re: Calendar Box() - 日付範囲 - 日付/時刻の変換 - SQL[データベース]使用できますエバリンサートコードの見栄えを良くし、数値を文字列に自動変換します。次のように変数をキャレット文字 (^) で囲むだけです。
testdata_HAY_QQ_LotList = evalinsert(
"SELECT DISTINCT
t1.wafer_number,
t1.testdate
FROM tst_master t1
LEFT OUTER JOIN tst_dataset_header t2
ON ( t2.run_id = t1.run_id )
WHERE (t1.testdate <= '^sqlstart^') /* Varible from Date Selection */
AND (t1.testdate >= '^sqlend^') /* Varible from Date Selection */
AND (t1.wafer_number NOT RLIKE '-ATL' )
ORDER BY t1.testdate DESC");
Re: Calendar Box() - 日付範囲 - 日付/時刻の変換 - SQL[データベース]ありがとう.. 仕事に着いたらすぐにこれを試してみます。
Re: Calendar Box() - 日付範囲 - 日付/時刻の変換 - SQL[データベース]サンプルコードには存在しないとのみ言及されています。
おそらく、私が今あなたのためにできる最も有用なことは、私が実行した実際の例を投稿することです:
Names Default To Here( 1 );
nw = New Window( "DATE SELECTION",
<<MODAL>= ' " || sqlstart || " ' AND runStartTime <= ' " || sqlend || " '
";
dt = Execute SQL(SQLConnection,
SQLcode,
"dt"
);</MODAL>Re: Calendar Box() - 日付範囲 - 日付/時刻の変換 - SQL[データベース]私は「||何か||」を宗教的に使用しています。 私がしようとしてきた問題
'"||sqlstart||"' を使用した場合の解決は、連結の処理です
私が仮定できる変数の sqlsart は数値です
正しく機能させるには、文字に変換する必要があります。 追加したところ
StartDate、sqlstartA、および sqlstart の Show() 会話が表示されます
プロセス。 それをクエリ自体に入れることは、私を困惑させたものです。
私はただ来るのではなく、まず自分でこれを解決しようとしてきました
ここで答えを言われます。
Re: Calendar Box() - 日付範囲 - 日付/時刻の変換 - SQL[データベース]やあ、
SQL where 句では、日付を ' で囲む必要があります。
例:
"
SELECT
*
FROM Runs
WHERE
RunStartDate > '2018-09-01'
";
"
SELECT
*
FROM Runs
WHERE
RunStartDate > ' " || DATE || " '
";
Re: Calendar Box() - 日付範囲 - 日付/時刻の変換 - SQL[データベース]どのデータベースを使用していますか?
日付をデータベースの日付 (Oracle では TO_DATE) に変換するか、文字列として渡す必要があるため、JMP の日付を一重引用符で囲む必要があります。おそらく Toad または同様の製品で、SQL コードをデータベースに対して直接実行する方法はありますか?そうすれば、データベースで機能するまでコードを反復処理してから、JSL で呼び出すことができます。
ところで、使用するのではなくデータベースを開くお勧めしますデータベース接続を作成する、 SQLを実行、 とデータベース接続を閉じる.そうすれば、DB への接続を開き、1 つ以上のクエリを実行してから、接続を閉じることができます。Open Database は、SQL クエリごとに新しい接続を作成します。
Re: Calendar Box() - 日付範囲 - 日付/時刻の変換 - SQL[データベース]お手伝いありがとう.. 「'を含めるようにSQLコードを変更してください」について詳しく教えてください。Re: Calendar Box() - 日付範囲 - 日付/時刻の変換 - SQL[データベース]やあ、
私の理解では、カレンダーボックスの選択を SQL の日付フィルターとして使用したいということですか?
その場合、2 つのスクリプトの変更が必要になります。
- フォーマットを使用して日付形式を変更する
- SQL コードを変更して ' を含めます
以下に例を示しました。
/******************************************************************************/
/* */
/* Start of Main Script [Calendar Box() to Select Wafer with Date Range] */
/* */
/******************************************************************************/
nw = New Window( "DATE SELECTION",
V List Box(
Align( Left ),
V List Box(
Spacer Box(
Size( 5, 15 )
),
Text Box(
"LOT DATE RANGE",
<< Set Font Name( "Segoe UI" ),
<< Set Font Style( "Bold" ),
<< Set Font Size( 12 ),
<< Justify Text( "Center" )
),
Spacer Box(
Size( 5, 20 )
),
H List Box(
Panel Box( "Select Start Date",
StartDate = Calendar Box(),
),
Spacer Box(),
Panel Box( "Select End Date",
EndDate = Calendar Box(),
)
),
Panel Box( "",
loadlot = Button Box( "LOAD LOT LIST",
<< Set Function(
Function(
{self},
sqlstartA = StartDate << Get Date(); // passed to database query
sqlendA = EndDate << Get Date(); // passed to database query
Show( sqlstart );
Show( sqlend );
self << close window;
)
)
)
)
)
)
);
sqlstart = format(sqlstartA, "Y/M/D h:m:s");
sqlend = format(sqlendA, "Y/M/D h:m:s");
/*******************************************************************************/
/* */
/* Brings in the list of wafers from the SQL Query [Desired with Caledar Box] */
/* */
/*******************************************************************************/
testdata_HAY_QQ_LotList = Expr(
"
SELECT DISTINCT
t1.wafer_number,
t1.testdate
FROM tst_master t1
LEFT OUTER JOIN tst_dataset_header t2
ON ( t2.run_id = t1.run_id )
WHERE (t1.testdate <= '"||sqlstart||"') // Varible from Date Selection
AND (t1.testdate >= '"||sqlend||"') // Varible from Date Selection
AND (t1.wafer_number NOT RLIKE '-ATL' )
ORDER BY t1.testdate DESC
"
);