μ¬λ¬λΆμ μ΄λν©λλ€.π μλ
νμΈμπ
The World No.1 μκ³μ΄ DBMS λ§ν¬λ² μ΄μ€μ
λλ€.π
λ§ν¬λ² μ΄μ€ λ€μ€κ° μΆμλ μ§λ λ²μ¨ 2λ
μ΄ λμ΄κ°λλ€.
μ΄λ² λ΄μ€λ ν°μμλ λ§ν¬λ² μ΄μ€ λ€μ€μ λ€μν κΈ°λ₯ μ€μμ νΉλ³ν μ
무μ μ μ©νκ² μ¬μ©ν μ μλ κ²λ€μ λν΄μ κ°λ΅νμ§λ§ μ¬λ―Έμκ² μ΄ν΄λ³΄λ μκ°μ κ°μ Έλ³΄λλ‘ νκ² μ΅λλ€. |
|
|
- μλ°μ€ν¬λ¦½νΈ ECMAScript 5 μ§μ
- SQL μ€ν μκ° μΈ‘μ κΈ°λ₯ μΆκ°
- λ€μν λ
Έμ΄μ¦ νν° μ§μ
- λμ보λ λ΄λΆμ TQLμ°¨νΈλ‘ μλ² λ©
|
|
|
πμλ°μ€ν¬λ¦½νΈ ECMAScript 5 μ§μπ |
|
|
λ§ν¬λ² μ΄μ€ λ€μ€μ μ§λ v37λΆν° μλ°μ€ν¬λ¦½νΈλ₯Ό TQL λ΄λΆμμ μ§μνκ³ μλ€λ κ²μ μκ³ κ³μλμ§μ? κΈ°μ‘΄μλ goμ μ μ¬ν μ€ν¬λ¦½νΈ μΈμ΄ tengoλ₯Ό ν΅ν΄ SCRIPT() κΈ°λ₯μ μ 곡νμμ§λ§, λ³΄λ€ μ½κ² νμ©ν μ μλλ‘ κΈλ² κΈ°λ₯μ μλ°μ€ν¬λ¦½νΈ κΈ°λ°μΌλ‘ νμ₯νμμ΅λλ€.
λ°λΌμ, μλ°μ€ν¬λ¦½νΈμ μ΅μν μ¬μ©μλΌλ©΄, μλμ κ°μ΄ λ§€μ° μ½κ² μλ°μ€ν¬λ¦½νΈ κΈ°λ°μ μλ²μ© Rest API νΉμ TQLμ μ¦μ κ°λ°ν μ μκ² λμμ΅λλ€.
νΉμ¬λ μ£Όμν μ μ ES5λ₯Ό μ 곡νκ³ μκΈ° λλ¬Έμ ES6νΉμ μ΄ν λ²μ μμ μ¬μ©νλ κΈ°λ₯μ μ§μνμ§ μλλ€λ κ²μ
λλ€. |
|
|
SCRIPT("js", { var prefix = $.params.prefix ? $.params.prefix : "name"; μλ° μ€ν¬λ¦½νΈ μ½λ..... }) CSV() |
|
|
λ μμΈν λ΄μ©μ μ¬κΈ°μ λ§ν¬λ₯Ό ν΄λ¦νμλ©΄ λ μμΈν νμΈνμ€ μ μμ΅λλ€.
κ·Έλ¬λ©΄ μ΄λ€ μ’
λ₯μ μ
무λ₯Ό μ΄ κΈ°λ₯μ ν΅ν΄ ν μ μμκΉμ?
- μΈλΆ Rest APIμ νλΌλ©ν°λ₯Ό μλ°μ€ν¬λ¦½μ μ
λ ₯ λ³μλ‘ μ¬μ©ν μ μμ΅λλ€.
- μΈλΆ λ°μ΄ν°λ² μ΄μ€μ λν μ κ·Όμ μ§μ ν μ μμ΅λλ€. (λΈλ¦Ώμ§ μ΄μ©)
- λ§ν¬λ² μ΄μ€ λ΄λΆμ SELECTλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μΆμΆνκ³ , λ³ν, μ¬μμ±ν μ μμ΅λλ€.
- μΈλΆμ μ‘΄μ¬νλ Rest APIλ₯Ό νΈμΆνκ³ , κ·Έ κ²°κ³Όλ₯Ό κ°μ Έμ μ‘°μν μ μμ΅λλ€.
μλμ μμ λ μΈλΆμμ μ
λ ₯ λ°μ νλΌλ©ν°λ₯Ό ν΅ν΄ SELECTλ₯Ό μννκ³ , κ·Έ κ²°κ³Όλ₯Ό ν΅ν΄ SQL μ»¬λΌ λ¦¬μ€νΈλ₯Ό μμ±ν ν, μ΄ μ»¬λΌμΌλ‘ μλ‘μ΄ SQLμ λ§λ νμ λ€μ μ€νν κ²°κ³Όλ₯Ό CSV()λ‘ λ΄λ³΄λ΄λ 볡μ‘ν Backend Rest APIμ μ½λμ
λλ€. |
|
|
SCRIPT("js", { // νλΌλ©ν° : fact, line // 1. SQL μ€ν κ²°κ³Όμμ μ»¬λΌ λ¦¬μ€νΈ μ»κ³ , μ€νΈλ§μΌλ‘ λ³ν sql1 = "select name from _FAB_SENSOR_META where fac_id = '" + $.params.fact + "' and line_id='" + $.params.line + "'"; cols = "" $.db().query(sql1).forEach( function(row){ cols += "'" + row + "'," }) cols = cols.slice(0, -1); // λ¬Έμμ΄ λμμ ν κΈμ μ κ±° // 2. μμ±λ μ»¬λΌ λ³μλ₯Ό νμ©νμ¬ μλ‘μ΄ SQL μμ±νκΈ° sql2 = "SELECT * FROM ( SELECT time, name, value FROM FAB_SENSOR where name in (" + cols + ")) PIVOT (SUM(value) FOR name IN (" + cols + ") )";
// 3. SQL μννκ³ , λ μ½λλ₯Ό TQLλ‘ μμ± $.db().query(sql2).yield() })
// 4. SQL κ²°κ³Όλ₯Ό Rest API μ μΈλΆ CSV ννλ‘ μ μ‘ CSV(heading(false)) |
|
|
λλΌμ΄ μ¬μ€μ μ΄ Backend APIμ μ΄λ ν μΈλΆ νλ‘μΈμ€λ λΆκ° νλ‘κ·Έλλ° νκ²½ λ±μ΄ λΆνμνλ€λ κ²μ΄κ³ , λ¨μ§ μ΄ μ€ν¬λ¦½νΈλ₯Ό λ§ν¬λ² μ΄μ€ λ€μ€μ μ μ₯ν¨μΌλ‘μ¨ μΈλΆμμ μ½κ³ λΉ λ₯΄κ² Rest API μλΉμ€λ₯Ό ν μ μλ€λ κ²μ
λλ€. μλλ μ€ν κ²°κ³Ό νλ©΄μ μΊ‘μ²ν κ²μ
λλ€. |
|
|
πSQL μ€ν μκ° μΈ‘μ κΈ°λ₯ μΆκ° π |
|
|
λ§ν¬λ² μ΄μ€ λ€μ€ λ΄λΆμμ μ 곡νλ SHELLμ μ λ§ λ€μν κΈ°λ₯μ μ 곡ν©λλ€.
λ€μ€μ λͺ¨λ κΈ°λ₯μ μΉ κΈ°λ°μ μ½μ ννλ‘ μ 곡νλλ°, νκ°μ§ μμ¬μ΄ μ μ΄ μμλ€λ©΄ λ°λ‘ μ€νλλ SQL μνμκ°μ μΈ‘μ νκΈ° νλ€μλ€λ κ²μ
λλ€.
μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ sql μνμ --timing μ΅μ
μ΄ μΆκ°λμμ΅λλ€. κ·Έλμ, μλμ κ°μ΄ μ€μ μν μκ°μ μ½κ³ λΉ λ₯΄κ² μΈ‘μ ν μ μκ² λμμ΅λλ€. |
|
|
πλ€μν λ
Έμ΄μ¦ νν° μ§μπ |
|
|
μ νΈμ²λ¦¬ λΆμΌμμλ λ°μλ λ€μν μ’
λ₯μ λ°μ΄ν°λ₯Ό νΉμ ν νν°λ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό λ³ννκ³ , μ μ²λ¦¬ν΄μΌ νλ κ²½μ°κ° λ§€μ° λ§μ΅λλ€.
λ¬Όλ‘ , μ΄λ₯Ό μν΄μ μ¬μ©νκ³ κ³μλ νΉλ³ν μΈμ΄μ κΈ°λ₯μ νμ©ν μ μμ§λ§, μ΄λ¬ν κΈ°λ₯μ κ°νΈνκ³ , λΉ λ₯΄κ² μ²λ¦¬νκ³ μ νλ€λ©΄, λ§ν¬λ² μ΄μ€μ λ
Έμ΄μ¦ νν°λ λ§€μ° μ’μ μ ν μ€μ νλμ
λλ€.
μλλ νμ¬ λ§ν¬λ² μ΄μ€ λ€μ€κ° μ§μνλ λ
Έμ΄μ¦ νν°μ μ’
λ₯μ
λλ€.
- νκ· κ°
- μ΄λ νκ· κ°
- λ‘μ° ν¨μ€ νν°
- μΉΌλ§ νν°
νΉν, μΉΌλ§ νν°λ λ
Έμ΄μ¦κ° μλ νκ²½μμ μμ€ν
μ μνλ₯Ό μ΅μ ννμ¬ μΆμ νλ μκ³ λ¦¬μ¦μΌλ‘, μΌμ λ°μ΄ν°λ μκ³μ΄ λ°μ΄ν°μ μ νλλ₯Ό λμ΄λ λ° μ μ©ν©λλ€. μ΄λ₯Ό ν΅ν΄ λ‘λ΄ μ μ΄, λ΄λΉκ²μ΄μ
, κΈμ΅ λ°μ΄ν° λΆμ λ±μμ μ€μκ°μΌλ‘ μ ννκ³ μμ μ μΈ μμΈ‘μ νλ κ³³μ λ§μ΄ μ¬μ©λ©λλ€.
μλλ λ€μ€μμ μ 곡νλ ν΄λΉ νν°λ₯Ό μ΄λ»κ² νμ©ν μ μλμ§μ λν μμ λ₯Ό 보μ¬λ립λλ€. |
|
|
SCRIPT("js", { $.result = { columns: ["val", "sig"], types: ["double", "double"] } for (i = 1.0; i <= 5.0; i+=0.03) { val = Math.round(i*100)/100; sig = Math.sin( 1.2*2*Math.PI*val ); noise = 0.09 * Math.cos(9*2*Math.PI*val) + 0.15 * Math.sin(12*2*Math.PI*val); $.yield( val, sig + noise ); } }) MAP_KALMAN(2, value(1), model(0.1, 0.6, 1.0)) CHART( size("600px", "400px"), chartOption({ xAxis:{ type: "category", data: column(0)}, yAxis:{ max:1.5, min:-1.5 }, series:[ { type: "line", data: column(1), name:"value+noise" }, { type: "line", data: column(2), name:"kalman" }, ], legend: { bottom: 10 }, }) ) |
|
|
μμμ μ°λμμΌλ‘ νμλ λΌμΈμ΄ νν°λ§μ΄ μλ£λ λΆλλ¬μ΄ 곑μ μ
λλ€. |
|
|
πλμ보λ λ΄λΆμ TQLμ°¨νΈλ‘ μλ² λ©π |
|
|
μ΄ λ¬΄μ¨ λ¬κΈ μλ μ λͺ©μΌκΉμ? μ΄λ―Έ μκ³ κ³μλ€μνΌ λ§ν¬λ² μ΄μ€ λ€μ€μμλ λ€μν μ’
λ₯μ μ°¨νΈλ₯Ό μ체 λμ보λλ₯Ό ν΅ν΄ μ§μνκ³ μμ΅λλ€. κ΄λ ¨ λ§ν¬ |
|
|
κ·Έλ μ§λ§, ν΄λΉ μ°¨νΈμ λν΄ λμ μΌλ‘ λ€μν νλΌλ©ν°λ₯Ό μ£Όλ©΄μ λμνκΈ°λ μ½μ§ μμ΅λλ€.
μ΄λ₯Ό μν΄ μΈλΆμ μ§μ κ°λ°λ TQL μ°¨νΈλ₯Ό λ΄λΆμ μλ² λ©ν μ μμ΅λλ€.
μλ₯Ό 보μ¬λ리기 μν΄ μμ μμ κ°λ¨νκ² λ§λ μΉΌλ§ νν° TQLμ λμ보λμ ν¬ν¨μ ν΄ λ³΄κ² μ΅λλ€. ν΄λΉ μΉΌλ§ νν°λ kalman.tqlλ‘ μ μ₯μ΄ λμ΄ μκ³ , μ΄λ₯Ό μλμ κ°μ΄ λμ보λμ ν¬ν¨μν΅λλ€. |
|
|
λμΌν μΉΌλ§ μ°¨νΈλ₯Ό μλμ κ°μ΄ 3κ°λ₯Ό λ°°μΉνκ³ , κ°κ° νμλλ κ²μ ꡬλΆνλ©΄ μλμ κ°μ΅λλ€. |
|
|
λ©μ§μ§ μμ΅λκΉ?
μ΄ κ³Όμ μ λ³λμ νλ‘κ·Έλλ° κ³Όμ μ κ±°μ³ νλ μμν¬λ₯Ό ν΅ν΄ ꡬννλ€λ©΄, μ μ΄λ λͺμκ°μ κ±Έλ Έμ μμ
μ
λλ€. μ λ μ΄ νλ©΄μ λ¨ 2λΆλ§μ λ§λ€μλ€μ! |
|
|
μ΄μμΌλ‘ λ§ν¬λ² μ΄μ€ λ€μ€λ₯Ό ν΅ν΄ μ μ©νκ² μ¬μ©ν μ μλ λͺκ°μ§ νμ μ λ¦¬ν΄ λ³΄μμ΅λλ€. μ΄λ¬ν λ΄μ©λ€μ΄ νμ©νμλ μ
무 νκ²½μ λ§μ λμμ΄ λκΈ°λ₯Ό κΈ°μν©λλ€.
λ§μ§λ§μΌλ‘, μ§κΈμ 2025λ
μ μλ‘μ΄ κ³νμ μΈμ°κ³ νμ°¨κ² λ¬λ €λκ°λ μκΈ°μ
λλ€. μ¬ν΄ μΈμ°μ μλν κ³ν λͺ¨λ μ΄λ£¨μκ³ , λ λ°μ νμκΈΈ κΈ°μλ리면μ μ΄λ² λ΄μ€λ ν°λ₯Ό λ§μΉλλ‘ νκ² μ΅λλ€.
μΈμ λ λ§ν¬λ² μ΄μ€λ₯Ό μ§μν΄μ£Όμκ³ , μμν΄μ£Όμλ λͺ¨λ λΆλ€κ» κ°μ¬μ λ§μμ μ¬λ¦½λλ€. |
|
|
(μ£Ό)λ§ν¬λ² μ΄μ€ I μμΈμ κ°λ¨κ΅¬ ν
ν€λλ‘ 20κΈΈ 10 3Mνμ 9μΈ΅ I 02-2038-4606 I sales@machbase.com
|
|
|
|
|