類似於xpath在xml文件中的定位,jsonpath表示式通常是用來路徑檢索或設定json的。其表示式可以接受「dot–notation」和「bracket–notation」格式,例如$.store.book[0].title、$[『store』][『book』][0][『title』]
jsonpaht 用乙個抽象的名字$來表示最外層物件。
使用.符號:$.store.book[0].title
使用:$['store']['book'][0]['title']
陣列索引
1)jsonpath 允許使用萬用字元 * 表示所以的子元素名和陣列索引。還允許使用 '..' 從e4x參照過來的和陣列切分語法[start:end:step]
2
)
$.store.book[(@.length-1)].title
3)使用'@'符號表示當前的物件,?(《判斷表示式》) 使用邏輯表示式來過濾
$.store.book[?(@.price < 10)].title
xpath
jsonpath
description
表示根元素
當前元素
. or
子元素n/a
父元素遞迴下降,jsonpath是從e4x借鑑的。
萬用字元,表示所有的元素
n/a屬性訪問字元
子元素操作符
連線操作符在xpath 結果合併其它結點集合。jsonp允許name或者陣列索引。
n/a[start:end:step]
陣列分割操作從es4借鑑。
應用過濾表示式
n/a指令碼表示式,使用在指令碼引擎下面。
n/axpath分組
介面返回:
[, , , , , , , ]
jsonpath
結果$.[*].name
所有學歷的name
$.[*].id
所有的id
$.[*]
所有元素
$.[(@.length-2)].name
倒數第二個元素的name
$.[2]
第三個元素
$.[(@.length-1)]
最後乙個元素
$.[0,1]
$.[:2]
前面的兩個元素
$.[?
(@.name =~ /.*中/i)]
過濾出所有的name包含「中」的書。
$..book[?(@.price<10)]
過濾出**低於10的書。
$.[*].
length()
所有元素的個數
介面返回:,,
,],"bicycle":
},"expensive": 10
}jsonpath表示式
結果$.store.book[*].author
或 $..author
[「nigel rees」,
「evelyn waugh」,
「herman melville」,
「j. r. r. tolkien」
]$.store.* 顯示所有葉子節點值[[
,,,],
]$.store..price
[8.95,
12.99,
8.99,
22.99,
19.95
]$..book[0,1]
或$..book[:2][,
]$..book[-2:]
獲取最後兩本書
$..book[2:][,
]$..book[?(@.isbn)]
所有具有isbn屬性的書
$.store.book[?(@.price < 10)]
所有**小於10的書
$..book[?(@.price <= $[『expensive』])]
所有**低於expensive欄位的書
$..book[?(@.author =~ /.*rees/i)]
所有符合正規表示式的書
返回所有
$..book.length()[4
]操作符
描述等於符號,但數字1不等於字元1(note that 1 is not equal to 『1』)
不等於符號
小於符號
小於等於符號
大於符號
大於等於符號
判斷是否符合正規表示式,例如[?(@.name =~ /foo.*?/i)]
in所屬符號,例如[?(@.size in [『s』, 『m』])]
nin排除符號
size
size of left (array or string) should match right
empty
判空符號
例如:1)所有具有isbn屬性的書
$.store.book[?(@.isbn)].author
2)所有**大於10的書
3)查詢***==3的所有物件$.store.book[?(@.price >
10)]
$.result.list[?(@.*** ==3)]
4)可以自定義過濾器來獲取想要的任何元素,可以多條件查詢
在這裡,你可以將你的json格式的資料拷貝上去,自己手動寫表示式解析檢視。
**
Kettle 中的迴圈
說道迴圈,小夥伴們肯定不陌生,就是重複幹一件事 而kettle中的迴圈一般是發生在job中,因為job是序列執行的 kettle的迴圈有兩種,一種是通過js指令碼,另外一種是通過遍歷前面步驟返回的每一行。下面是我寫的偽 我將使用kettle來實現這段 array sys1 sys2 sys3 sys...
使用kettle中遇到的問題
以4.2為例 1 使用merge join操作,資料大的時候會出現資料1條變兩條一樣的情況。但是在跑自帶例子的時候沒問題,資料量小的時候也沒問題。我使用的記錄為20w條,出現了重複問題。2 使用merge join的left outer連線的時候,如果右邊的資料連線值為空,則兩邊資料對應關係會亂掉,...
Kettle中ETL的效率優化
如果我們想要優化乙個etl ktr或者kjb 的效能,我們首先需要知道的就是它的瓶頸在 而這些資訊一般只能在etl執行的步驟度量中看到,並且是不會持久化的。如果你希望把一些資料記錄下來,幫助以後進行查閱,那麼可以開啟資料庫日誌和效能監控。作業edit settings log具體設定過程就不細講了,...