繼之前分享如何實作「窮人版 ELK」之後,再來分享一下這個服務裡面的 DSL 是如何實作的。會想到要為這個服務做 DSL,主要是小編雖然已經把 Impala 產生的資料利用一些工具轉成 PNG 圖檔,但動作太繁雜,所以想把這些過程用 DSL 來表示,工程師只要會下 SQL 就能把資料轉成 PNG 圖檔了。
其實對於 DSL,有在 follow 粉絲頁的朋友應該有注意到,小編很久以前就有一個屬意的方案了,那就是 MSON。它結合了 Markdown 以及 JSON,所以不只人類易讀,機器也易讀。只不過 MSON Parser 一直都是殘缺不全,所以沒辦法讓小編完整的實作 DSL,這個方案就被捨棄了。
另一個也很適合拿來做 DSL 的就是 YAML 了,個人覺得跟 MSON 比起來易讀性稍低一點,但已經是目前還不錯的實作方式,所以就以這個來做為「窮人版 ELK」的 DSL 實作方案。
DSL 已經把所有轉換的細節都隱藏起來了,工程師只要先自己在 Impala 上撰寫正確的 SQL 指令,其他動作只要把必要欄位填完就可以了。下面是必要欄位的說明:
* SQL:要在 Impala 裡面執行的 SQL 指令,其中有用 ":VAR" 包起來的變數名稱,表示是從 INPUT 欄位取得
* CHART:highcharts 的圖表格式,DSL 目前支援 column (長條圖)、pie (圓餅圖)
* INPUT:這是一個陣列,表示這個變數名稱是從外部操作時取得,另外後面的 "date" 為資料型態,目前支援的類型為 HTML 的 input[type]
* OUTPUT:產生 PNG 圖檔時的欄位資訊,如 X 軸是從 Impala 的哪個欄位取得,顯示在圖表上的名稱要叫什麼
至於轉換細節又是另一件麻煩事,將 DSL 轉成最後的圖檔又經過了不少步驟:
1. js-yaml:雖然說 YAML 很適合拿來做 DSL,但 JSON 還是目前大家最常用的格式。所以當然要先把 YAML 轉成 JSON 這樣才好操作 XD
2. jq:轉換過程中 jq 幫了小編很大的忙,官網寫著這是一套輕量且靈活的命令列 JSON 處理工具。無論要對 JSON 取 key、取 value、取 length、做 group by、做 sort by、if-else、while-loop 都可以,就是很強大。所以小編就拿這個將 YAML 轉換完的 JSON,用一堆奇怪的語法把資料轉換成功。
其實在轉換過程最麻煩的不是操作 JSON,最麻煩的在小編不太會寫 bash script 啊!!!尤其是一堆變數轉換的過程,一下子用 ${},一下子用 $(),還有 ${[$k]} 的這種寫法,看了頭好痛 Orz
最後把 jq 轉完的資料丟給前一篇提到的那些工具,就可以完美把 PNG 圖檔產生出來了,第二篇的「窮人版 ELK」文章到此也就結束了。其實這個專案還有另一個跟圖表無關的功能,那就是即時觀看 API 發送歷程,如果有第三篇的話再來分享一下好了。
* 如何實作「窮人版 ELK」:https://www.facebook.com/kewang.information/posts/2085843121692051
* 如何使用 MSON 的幾個方向:https://www.facebook.com/kewang.information/posts/1940647046211660
* jq:https://stedolan.github.io/jq
#mson #dsl #yaml #json #jq
同時也有60部Youtube影片,追蹤數超過7,970的網紅吳老師EXCEL VBA設計(大數據自動化)教學,也在其Youtube影片中提到,VBA到Python程式開發202101第9次上課 01_重點回顧與用requests當網路爬蟲 02_切割資料與新增到資料庫說明 03_新增資料庫與批次寫入資料 04_用樞紐分析表與圖建立查詢結果 05_改用SQL語法查詢結果 06_下載JSON與取得所有資料 07_json轉存為CSV檔與下載...
「json轉sql」的推薦目錄:
- 關於json轉sql 在 Kewang 的資訊進化論 Facebook 的最佳貼文
- 關於json轉sql 在 Kewang 的資訊進化論 Facebook 的最佳貼文
- 關於json轉sql 在 紀老師程式教學網 Facebook 的最讚貼文
- 關於json轉sql 在 吳老師EXCEL VBA設計(大數據自動化)教學 Youtube 的最讚貼文
- 關於json轉sql 在 吳老師EXCEL VBA設計(大數據自動化)教學 Youtube 的精選貼文
- 關於json轉sql 在 吳老師EXCEL VBA設計(大數據自動化)教學 Youtube 的最佳貼文
- 關於json轉sql 在 [問題] 資料庫轉JSON格式傳給javascript - 看板Ajax 的評價
- 關於json轉sql 在 匯入JSON 檔: Via Github API - iT 邦幫忙 的評價
- 關於json轉sql 在 教學課程:Azure Cosmos DB 的資料庫移轉工具 - GitHub 的評價
- 關於json轉sql 在 02 下載JSON格式與寫入到資料庫 - YouTube 的評價
json轉sql 在 Kewang 的資訊進化論 Facebook 的最佳貼文
小編最近一直用 Impala 在分析產品的 API log,雖然有下 SQL 做了一些圖表 (DAU, MAU) 出來,但如果要讓非資訊人員自己下指令產生這些圖表的話,真的是會要了他們老命。尤其這些圖表如果是要給 PM、行銷看的話,每隔幾天就要叫工程師跑圖表,工程師真的會累死 Orz。
雖然有 ELK 這種整套都弄好好的系統,但這種系統還是工程師比較知道如何操作。小編想了一下,自己寫一套讓大家一鍵產生圖表還比較方便,於是就花了兩三天做了這個「窮人版 ELK」。
本來小編是想直接用 Cloudera HUE 產出來的圖表拿來處理,但因為 HUE 的報表是用 D3 產生出來的,所以如果真要跟 HUE 串接的話,除了 auth 那段要解決之外,還要處理 D3 產出來的互動式圖表。看了一下實在太花功夫,所以小編就放棄這段,直接重頭開始刻。
這次開發用了下面幾套工具,一直 pipe 來 pipe 去的,小編頭都快昏了 Orz。如果要跟數據打交道的話,真的要好好學一下 Linux 上的各種文字處理工具:
1. impala-shell:用 Impala 下 SQL 指令,將資料拉回來,參數 -B 可以將結果產生成 CSV 格式
2. csv2json:因為這次用的圖表工具只吃 JSON 格式,所以先將資料從 CSV 轉為 JSON,才能繼續下一步
3. json2highcharts:自己開發的程式,因為小編這次用的圖表工具 highcharts,無論是資料或設定檔 (像是顯示直條圖或折線圖) 都是 JSON 格式,所以要把這些資料跟設定檔轉成 highcharts 能吃的格式,所以又做了一次 JSON 轉換
4. highcharts-export-server:最後一步就是要呼叫產生圖表的工具了,小編找了蠻多的能在 command line 執行的圖表工具,有要裝 cairo 的,有要裝 png lib 的,還有一些要重頭 make 的,實在都太麻煩。後來看到這套是使用 phantomjs,直接跑 browser render,雖然肥了一點但不用管 dependency 就是爽 XDD
把這 4 步都執行完之後就會產生圖表了。但為了方便之後產生新類型的圖表,小編打算只要讓工程師把寫好的 DSL 丟到 server 上,非資訊人員就可以直接用網頁操作了。下一篇再來講如何開發 DSL 好了 (又是一連串的文字處理 Orz)。
* backend-log-explorer:https://github.com/mitaketw/backend-log-explorer
* 想了解在執行 Impala 之前,這些資料做了什麼處理嗎?推薦強者小編同事的文章:https://www.facebook.com/groups/616369245163622/permalink/1329521563848383/
#log #impala #highcharts #elk #資料分析
json轉sql 在 紀老師程式教學網 Facebook 的最讚貼文
W3Big - 繁體中文最完整豐富的網頁教學平台,連 C/C++/Java/Python 教學都有喔!
W3Big: http://www.w3big.com/zh-TW/
中文簡介: https://goo.gl/B4Cjgw
這是前不久從一位網友發的文看到的(詳見上述「中文簡介」部分)!稍微玩了一下,發現還蠻豐富的!加上很適合英文沒那麼熟練、想往「網頁程式設計」這方面前進的入門者研讀,所以就在發現後的第一時間,轉貼給大家參考了!
大家可以先點擊上述的 W3Big 連結,然後依照下列順序學習:
-- 前端網頁設計 --
1. HTML
2. CSS3
3. JavaScript
4. HTML DOM
5. AJAX
6. jQuery / jQueryUI / jQuery Mobile
7. JSON
8. AngularJS, React, Bootstap, Foundation 等 JavaScript 框架
-- 後端網頁設計 --
1. PHP / Python3 / Node.js / Ruby 擇一
2. 框架學習: 若您選的後端語言是 Python3,可搭配 Django 服用,加快網站開發速度
3. 資料庫學習: 先學 SQL 語言,接著選一種資料庫,MySQL 或 MongoDB 都可以。
-- 網路相關知識(選修) --
1. TCP/IP
2. HTTP
此外,這個網站還有底下幾個與網頁設計比較無關主題,是我認為很值得學習的:
1. 傳統程式語言: C / C++ / Java / C#
2. 開發環境與工具: Linux / Docker / Eclipse / Git
3. 手機程式設計: Android / iOS (Swift)
全站內容不僅中文,還完全免費!這麼優的學習資源還真的蠻少見的!推薦給想用中文學習電腦知識的朋友收藏!
今天的內容如果您覺得不錯,還請多多按讚鼓勵,或轉發分享。有任何問題可以留言在下方,我會盡快回覆您的喔!
json轉sql 在 吳老師EXCEL VBA設計(大數據自動化)教學 Youtube 的最讚貼文
VBA到Python程式開發202101第9次上課
01_重點回顧與用requests當網路爬蟲
02_切割資料與新增到資料庫說明
03_新增資料庫與批次寫入資料
04_用樞紐分析表與圖建立查詢結果
05_改用SQL語法查詢結果
06_下載JSON與取得所有資料
07_json轉存為CSV檔與下載HTML
完整教學
http://goo.gl/aQTMFS
吳老師教學論壇
http://www.tqc.idv.tw/
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/tcfst_python_2021_1
課程簡介:入門
建置Python開發環境
基本語法與結構控制
迴圈、資料結構及函式
VBA重要函數到Python
檔案處理
資料庫處理
課程簡介:進階
網頁資料擷取與分析、Python網頁測試自動化、YouTube影片下載器
處理 Excel 試算表、處理 PDF 與 Word 文件、處理 CSV 檔和 JSON 資料
實戰:PM2.5即時監測顯示器、Email 和文字簡訊、處理影像圖片、以 GUI 自動化來控制鍵盤和滑鼠
上課用書:
參考書目
Python初學特訓班(附250分鐘影音教學/範例程式)
作者: 鄧文淵/總監製, 文淵閣工作室/編著?
出版社:碁峰? 出版日期:2016/11/29
Python程式設計入門
作者:葉難
ISBN:9789864340057
出版社:博碩文化
出版日期:2015/04/02
吳老師 110/4/20
EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境
json轉sql 在 吳老師EXCEL VBA設計(大數據自動化)教學 Youtube 的精選貼文
VBA到Python程式開發202101第9次上課
01_重點回顧與用requests當網路爬蟲
02_切割資料與新增到資料庫說明
03_新增資料庫與批次寫入資料
04_用樞紐分析表與圖建立查詢結果
05_改用SQL語法查詢結果
06_下載JSON與取得所有資料
07_json轉存為CSV檔與下載HTML
完整教學
http://goo.gl/aQTMFS
吳老師教學論壇
http://www.tqc.idv.tw/
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/tcfst_python_2021_1
課程簡介:入門
建置Python開發環境
基本語法與結構控制
迴圈、資料結構及函式
VBA重要函數到Python
檔案處理
資料庫處理
課程簡介:進階
網頁資料擷取與分析、Python網頁測試自動化、YouTube影片下載器
處理 Excel 試算表、處理 PDF 與 Word 文件、處理 CSV 檔和 JSON 資料
實戰:PM2.5即時監測顯示器、Email 和文字簡訊、處理影像圖片、以 GUI 自動化來控制鍵盤和滑鼠
上課用書:
參考書目
Python初學特訓班(附250分鐘影音教學/範例程式)
作者: 鄧文淵/總監製, 文淵閣工作室/編著?
出版社:碁峰? 出版日期:2016/11/29
Python程式設計入門
作者:葉難
ISBN:9789864340057
出版社:博碩文化
出版日期:2015/04/02
吳老師 110/4/20
EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境
json轉sql 在 吳老師EXCEL VBA設計(大數據自動化)教學 Youtube 的最佳貼文
VBA到Python程式開發202101第9次上課
01_重點回顧與用requests當網路爬蟲
02_切割資料與新增到資料庫說明
03_新增資料庫與批次寫入資料
04_用樞紐分析表與圖建立查詢結果
05_改用SQL語法查詢結果
06_下載JSON與取得所有資料
07_json轉存為CSV檔與下載HTML
完整教學
http://goo.gl/aQTMFS
吳老師教學論壇
http://www.tqc.idv.tw/
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/tcfst_python_2021_1
課程簡介:入門
建置Python開發環境
基本語法與結構控制
迴圈、資料結構及函式
VBA重要函數到Python
檔案處理
資料庫處理
課程簡介:進階
網頁資料擷取與分析、Python網頁測試自動化、YouTube影片下載器
處理 Excel 試算表、處理 PDF 與 Word 文件、處理 CSV 檔和 JSON 資料
實戰:PM2.5即時監測顯示器、Email 和文字簡訊、處理影像圖片、以 GUI 自動化來控制鍵盤和滑鼠
上課用書:
參考書目
Python初學特訓班(附250分鐘影音教學/範例程式)
作者: 鄧文淵/總監製, 文淵閣工作室/編著?
出版社:碁峰? 出版日期:2016/11/29
Python程式設計入門
作者:葉難
ISBN:9789864340057
出版社:博碩文化
出版日期:2015/04/02
吳老師 110/4/20
EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境
json轉sql 在 匯入JSON 檔: Via Github API - iT 邦幫忙 的推薦與評價
只好自己先想法子先成JSON 檔來學習。 由於個人平常的工作主要是接觸/熟悉關聯式資料庫(MySQL/Oracle/PostgreSQL/SQL Server/SQLite),所以對於 ... ... <看更多>
json轉sql 在 教學課程:Azure Cosmos DB 的資料庫移轉工具 - GitHub 的推薦與評價
教學課程:了解如何使用開放原始碼Azure Cosmos DB 資料移轉工具,將各種來源的資料(包括MongoDB、SQL Server、資料表儲存體、Amazon DynamoDB、CSV 及JSON 檔案) 匯入 ... ... <看更多>
json轉sql 在 [問題] 資料庫轉JSON格式傳給javascript - 看板Ajax 的推薦與評價
各位前輩好 (建議開全頁模式觀看)
小弟遇到一些問題想請教一下大家
我放在MYSQL的資料如下
https://i.imgur.com/a/BhDGz.jpg
目前需將資料庫的資料拉出來
轉json給javascript接收
參考到https://www.youtube.com/watch?v=8xq6PBqjcl8 的作法
但要給javascript接收卻一直失敗
----------- 以下為程式碼
data.php
<?php
header("Content-type: text/javascript");
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '123456';
$dbname = 'test2';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) ;
mysql_query("SET NAMES 'utf8'");
mysql_select_db($dbname);
$sql = "SELECT X,Y,Z FROM test";
$result = mysql_query($sql);
$array_user=array();
$output="";
while($data = mysql_fetch_assoc($result))
{
$array_user[] = $data;
}
$output= json_encode($array_user);
if(isset($_GET['callback'])){
$callback=$_GET['callback'];
echo $callback. '(' . $output . ');';
}
else{
echo $output;
}
?>
執行結果為
https://i.imgur.com/a/JO8D8.jpg
此部分是成功的
但是下面這段
<!DOCTYPE html>
<html>
<head>
<title>json</title>
</head>
<body>
<div id ='jsondata'></div>
<script>
function myCallback(data){
var text = '';
for (var i=0; i< data.length; i++){
item=data[i];
text+= "X" + item.X +"Y"+item.Y+"Z"+item.Z+"</br>";
}
document.getElementById.('jsondata').innerHTML="<table border='0'>" +text+
"</table>";
}
</script>
<script src='https://localhost/data.php?callback=myCallback'></script>
</body>
</html>
在這部分就無法成功執行
而且從網頁原始碼來看好像script裡的程式都沒有作用(字都灰的)
不知道是哪邊出了錯誤
請各位幫忙一下,謝謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.249.191
※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1477329741.A.3A8.html
就是可以直接讓javascript接收PHP資料的方法??
因為基本上我就是照著影片來做,但不曉得為什麼行不通,javascript初學者QQ
※ 編輯: andrew5106 (114.46.174.57), 10/25/2016 15:19:17
※ 編輯: andrew5106 (114.46.174.57), 10/25/2016 15:20:38
※ 編輯: andrew5106 (180.217.249.191), 10/25/2016 18:32:44
... <看更多>