簡體   English   中英

使用 KQL 和 externaldata() 運算符從 json 文件中提取信息

[英]Using KQL and externaldata() operator to pull infromation from json file

嘗試創建一個哨兵查詢 (KQL),它使用 externaldata() 運算符從 json 文件“https://www.gov.uk/bank-holidays.json”中獲取信息。 我發現的問題是由於包含列/字段“日期”標記的 json 文件不允許將其作為變量。 任何人都能夠從外部文件中獲得多層 json 字段嗎?

externaldata (title:string, date:string, notes:string, bunting:bool)[
    @"https://www.gov.uk/bank-holidays.json"
    ]
    with(format="multijson")
  1. externaldata運算符的創建是為了使基於 Azure Data Explorer (AKA Kusto) 的 SaaS 系統(例如 Log Analytics 和 Application Insights)的用戶能夠處理位於 Azure 存儲中的外部數據。
    在不受支持的方案中從 web 站點檢索數據。
    有時它有效,有時則無效(取決於另一邊的內容)。
    對於您的特定 URL,它不起作用。
  2. KQL 中的特殊名稱可以用括號和單/雙限定符表示,例如['date']["date"]
  3. 整個文檔寫在一行中。 json就足夠了。 不需要multijson
  4. 假定的架構是錯誤的( title:string, date:string, notes:string, bunting:bool )。
    JSON 在第一層有 3 個鍵,每個王國一個: "england-and-wales""scotland" & "northern-ireland"
  5. 雖然我們可以使用上述鍵來讀取 JSON,但我更喜歡將其讀取為txtraw ,將其解析為 JSON 然后分解它,如下面的查詢所示。
externaldata(doc:string)
[h'https://<storage-account-name>.blob.core.windows.net/mycontainer/bank-holidays.json;<secret>']
with(format='txt')
| project parse_json(doc)
| mv-expand kind=array doc
| project   kingdom  = tostring(doc[0])
           ,division = doc[1].division
           ,events   = doc[1].events
| mv-expand events
| evaluate bag_unpack(events) 
//| sample 10
金豐 分配 彩旗 日期 筆記 標題
北愛爾蘭 北愛爾蘭 錯誤的 2017-04-14T00:00:00Z 耶穌受難日
英格蘭和威爾士 英格蘭和威爾士 真的 2017-05-29T00:00:00Z Spring 銀行假日
蘇格蘭 蘇格蘭 錯誤的 2018-03-30T00:00:00Z 耶穌受難日
英格蘭和威爾士 英格蘭和威爾士 真的 2018-12-25T00:00:00Z 聖誕節
北愛爾蘭 北愛爾蘭 錯誤的 2019-04-19T00:00:00Z 耶穌受難日
英格蘭和威爾士 英格蘭和威爾士 真的 2019-12-25T00:00:00Z 聖誕節
北愛爾蘭 北愛爾蘭 真的 2020-01-01T00:00:00Z 元旦
蘇格蘭 蘇格蘭 真的 2022-01-04T00:00:00Z 替代日 1 月 2 日
蘇格蘭 蘇格蘭 錯誤的 2022-09-19T00:00:00Z State 伊麗莎白二世葬禮銀行假日
蘇格蘭 蘇格蘭 真的 2023-01-02T00:00:00Z 替代日 元旦

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM