共用方式為


Kusto CLI

Kusto.Cli 是命令列公用程式,可用於在 Kusto 叢集上傳送查詢和控制命令。 您可以用幾種模式來執行:

  • REPL 模式:使用者輸入查詢和命令,而工具會顯示結果,然後等候下一個使用者查詢/命令。 (「REPL」代表「read/eval/print/loop」。)

  • 執行模式:使用者輸入一或多個查詢和命令,以命令列引數的形式執行。 引數會依序自動執行,並將其結果輸出到主控台。 或者,在執行所有輸入查詢和命令之後,此工具就會進入 REPL 模式。

  • 腳本模式:類似于執行模式,但使用檔案中指定的查詢和命令, (「script」) ,而不是透過命令列引數。

Kusto.Cli 的主要目的是為了針對通常需要撰寫程式碼的 Kusto 服務來自動化工作。 例如,C# 程式或 PowerShell 指令碼。

取得工具

Kusto.Cli 是 NuGet 套件 Microsoft.Azure.Kusto.Tools 的一部分,您可以下載 .NET。 下載套件之後,請將套件的 tools 資料夾解壓縮至目的檔案夾。 不需要額外的安裝,因為其是可自行安裝的 xcopy。

執行工具

Kusto.Cli 需要至少一個命令列引數來執行。 這個引數通常是工具應該連接之 Kusto 服務的連接字串。 如需詳細資訊,請參閱 Kusto 連接字串 如果您在不使用命令列引數的情況下執行工具,並使用一組未知的引數,或使用 /help 參數來執行工具,則主控台上會顯示說明訊息。

例如,使用下列命令來執行 Kusto.Cli。 此命令會連接到 help Kusto 服務,並將資料庫內容設定為 Samples 資料庫:

Kusto.Cli.exe "https://help.kusto.windows.net/Samples;Fed=true"

注意

在連接字串前後使用雙引號,以防止 shell 應用程式 (例如 PowerShell) 誤解讀分號 (;) 和類似的字元。

命令列引數

(若要取得命令列引數的完整清單,請執行: Kusto.Cli.exe -help .)

Kusto.Cli.exeConnectionString [Switches]

ConnectionString

  • 保存所有 Kusto 連接資訊的 Kusto 連接字串。 預設值為 net.tcp://localhost/NetDefaultDB

-execute:QueryOrCommand

  • 如果有指定,會在執行模式中執行 Kusto.Cli,並執行指定的查詢或命令。 此參數可以重複執行,並依外觀循序執行查詢/命令。 此參數不能與 -script-scriptml 一起使用。

-keepRunning:EnableKeepRunning

  • 如果有指定為 truefalse,則會在處理完所有 -script-execute 值之後啟用或停用 REPL 模式。

-script:ScriptFile

  • 如果有指定,會在指令碼模式中執行 Kusto.Cli。 系統會載入指定的指令檔,並依序執行其中的查詢或命令。 使用分行符號來分隔查詢/命令,但以 &&& 組合結尾的行除外,如下所述。 此參數不能與 -execute 一起使用。

-scriptml:ScriptFile

  • 如果有指定,會在指令碼模式中執行 Kusto.Cli。 系統會載入指定的指令檔,並依序執行其中的查詢或命令。 整個腳本檔案會被視為單一查詢或命令, (忽略行輸入模式或區塊輸入模式考慮。) 這個參數不能與 一 -execute 起使用。

-scriptQuitOnError:QuitOnFirstScriptError

  • 如果啟用,如果腳本中的命令或查詢產生錯誤,Kusto.Cli 將會結束。 如果停用,即使發生錯誤,腳本執行仍會繼續。 預設會啟用此參數。

-echo:EnableEchoMode

  • 如果有指定為 truefalse,則會啟用或停用 echo 模式。 當啟用 echo 模式時,會在輸出中重複每個查詢或命令。

-transcript:TranscriptFile

  • 如果有指定,會將程式輸出寫入至 TranscriptFile

-logToConsole:EnableLogToConsole

  • 如果有指定為 truefalse,則會啟用或停用在主控台上顯示程式輸出。

-lineMode:EnableLineMode

  • 決定從主控台或腳本輸入查詢或命令時,如何處理分行符號。 根據預設, (或明確設定為 true) ,此工具會使用「行輸入模式」。 如果設定為 false ,腳本會在「區塊輸入模式」中讀取。如需這兩種模式的說明,請參閱下方。

範例

Kusto.Cli.exe "https://help.kusto.windows.net/Samples;Fed=true" -script:"c:\mycommands.txt"

注意

冒號和引數值之間不應該有空格

指示詞

Kusto.Cli 會在此工具中執行一些指示詞,而不是將其傳送至服務進行處理。

指示詞 描述
?
#h
#help
取得簡短的說明訊息
q
#quit
#exit
結束工具
#a
#abort
失敗地結束工具
#clip 下一個查詢或命令的結果將會複製到剪貼簿
#cls 清除主控台畫面
#connect[ConnectionString] 連接至不同的 Kusto 服務 (如果已省略 ConnectionString,將會顯示目前的 ConnectionString)
#crp [Name [=Value]] 設定用戶端要求屬性的值,或只顯示其值,或顯示所有值。
#crp (-list | -doc) [Prefix] 依前置詞列出用戶端要求屬性,或全部列出
#dbcontext [DatabaseName] 將查詢和命令所使用的「內容」資料庫變更為 DatabaseName。 如果省略,則會顯示目前的內容
keText 將指定的文字傳送至執行中的 Kusto.Explorer 流程
#loopCountText 執行文字數次
#qp [Name [=Value]] 設定查詢參數的值,或只顯示其值,或顯示所有值。 開頭/結尾的單引號/雙引號將會被修剪
#saveFilename 下一個查詢或命令的結果將會儲存到指定的 CSV 檔案
#scriptFilename 執行指定的指令碼
#scriptmlFilename 執行指定的多行指令碼

行輸入模式和區塊輸入模式

根據預設,Kusto.Cli 會以行輸入模式執行。 每個換行字元都會轉譯為查詢/命令之間的分隔符號,而這一行則會立即傳送以供執行。

在此模式中,您可以將長查詢或命令分成多行。 在新行之前,& 字元是行的最後一個字元,會導致 Kusto.Cli 繼續讀取下一行。 在新行之前,&& 字元是行的最後一個字元,會導致 Kusto.Cli 忽略新行並繼續讀取下一行。

Kusto.Cli 也支援在 區塊輸入模式 中執行,方法是在命令列中指定 -lineMode:false ,或藉由執行 指示詞 #blockmode 。 在此模式中,Kusto.Cli 的行為類似于 Kusto.Explorer 和 Kusto.WebExplorer,在該行中會一起讀取為「區塊」,而每個區塊是由單一查詢或命令所組成,而區塊會以一或多個空白行分隔。

注意

從腳本檔案讀取查詢/命令時,強烈建議使用 區塊輸入模式 , (-script) 。

註解

Kusto.Cli 會解讀 // 以批註行開頭新行的字串。 其會忽略該行的其餘部分,並繼續讀取下一行。

僅限工具選項

命令 效果 目前
#timeon|#timeoff 啟用/停用選項 timing:顯示要求的時間 true
#tableon|#tableoff 啟用/停用選項 tableView:將結果集格式化為資料表 true
#marson|#marsoff 啟用/停用選項 marsView:顯示倒數第二個結果集 FALSE
#resultson|#resultsoff 啟用/停用選項 outputResultsSet:顯示結果集 true
#prettyon|#prettyoff 啟用/停用選項 prettyErrors:清除錯誤 true
#markdownon|#markdownoff 啟用/停用選項 markdownView:將資料表格式化為 MarkDown FALSE
#progressiveon|#progressiveoff 啟用/停用選項 progressiveView:要求並顯示漸進式結果 FALSE
#linemode|#blockmode 啟用/停用選項 lineMode:單行輸入模式 TRUE
命令 效果 預設
#cridon|#cridoff (啟用|停用選項 crid:在傳送要求之前顯示 ClientRequestId) FALSE
#csvheaderson|#csvheadersoff (啟用|停用選項 csvHeaders:在 CSV 輸出中包含標頭) TRUE
#focuson|#focusoff (啟用|停用選項 focus:移除所有額外的寫錯字,並將焦點放在適當的內容) FALSE
#linemode|#blockmode (啟用|停用選項 lineMode:單行輸入模式) TRUE
#markdownon|#markdownoff (啟用|停用選項 markdownView:將資料表格式化為 MarkDown) FALSE
#marson|#marsoff (啟用|停用選項 marsView:顯示倒數第二個結果集) FALSE
#prettyon|#prettyoff (啟用|停用選項 prettyErrors:清除錯誤) TRUE
#querystreamingon|#querystreamingoff (啟用|停用選項 queryStreaming:使用 queryStreaming 端點 (僅限 Kusto 小組)) FALSE
#resultson|#resultsoff (啟用|停用選項 outputResultsSet:顯示結果集) TRUE
#tableon|#tableoff (啟用|停用選項 tableView:將結果集格式化為資料表) TRUE
#timeon|#timeoff (啟用|停用選項 timing:顯示要求花費的時間量) TRUE
#typeon|#typeoff (enable|disable 選項 typeView :在資料表檢視中顯示每個資料行的類型。強制 Streaming=true) TRUE
#v2protocolon|#v2protocoloff (啟用|停用選項 v2protocol:使用 v2 查詢通訊協定,而不是 v1) TRUE

使用 Kusto.Cli 將結果匯出為 CSV

Kusto.Cli 具有特殊的用戶端命令 #save,會將下一個查詢結果匯出為 CSV 格式的本機檔案。 例如,下一行將從 StormEvents 資料表中的 10 筆記錄匯出到 help.kusto.windows.net 叢集 Samples 資料庫:

Kusto.Cli.exe @help/Samples -execute:"#save c:\temp\test.log" -execute:"StormEvents | take 10"

使用 Kusto.Cli 來控制正在執行的 Kusto.Explorer 實例

您可以指示 Kusto.Cli 與在電腦上執行 Kusto.Explorer 的「主要」實例進行通訊,並傳送查詢。 這項機制適用於想要執行一些查詢,但不想重複啟動 Kusto.Explorer 流程的程式。 在下列範例中,Kusto.Cli 會用來對說明叢集執行查詢:

#connect cluster('help').database('Samples')

#ke StormEvents | count

語法很簡單:#ke,後面接著空格,以及要執行的查詢。 然後,會將查詢傳送至 Kusto.Explorer 的主要實例 (如果有的話),並包含 Kusto.Cli 中設定目前的叢集/資料庫。