添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

R 外掛程式會使用 R 文稿執行使用者定義函式 (UDF)。

文本會取得表格式數據做為其輸入,併產生表格式輸出。 外掛程式的運行時間裝載於 叢集節點上的沙箱 中。 沙箱提供隔離且安全的環境。

T | evaluate [ ( hint.distribution = single )] | per_node r( 腳本 [ , , script_parameters ] [ , external_artifacts] )

深入瞭解 語法慣例

kargs :script_parameters 自變數的值 ,做為 R 字典。 result :R 文稿所建立的 R 數據框架。 值會變成表格式數據,該數據會傳送至外掛程式之後的任何 Kusto 查詢運算元。

啟用外掛程式

  • 該外掛程式預設為停用。
  • 在叢集的 [組態] 索引標籤 中,啟用或停用 [Azure 入口網站] 中的外掛程式。 如需詳細資訊,請參閱 在 Azure 數據總管叢集中管理語言延伸模組 (預覽)
  • R 沙箱映像

  • R 沙箱映像是以 R 3.4.4 for Windows 為基礎,並包含 Anaconda R Essentials 套件組合 中的套件
  • range x from 1 to 360 step 1
    | evaluate r(
    typeof(*, fx:double),               //  Output schema: append a new fx column to original table 
    'result <- df\n'                    //  The R decorated script
    'n <- nrow(df)\n'
    'g <- kargs$gain\n'
    'f <- kargs$cycles\n'
    'result$fx <- g * sin(df$x / n * 2 * pi * f)'
    , bag_pack('gain', 100, 'cycles', 4)    //  dictionary of parameters
    | render linechart 
    
    .show operations
    | where StartedOn > ago(1d) // Filtering out irrelevant records before invoking the plugin
    | project d_seconds = Duration / 1s // Projecting only a subset of the necessary columns
    | evaluate hint.distribution = per_node r( // Using per_node distribution, as the script's logic allows it
        typeof(*, d2:double),
        'result <- df\n'
        'result$d2 <- df$d_seconds\n' // Negative example: this logic should have been written using Kusto's query language
    | summarize avg = avg(d2)
    
  • 若要避免 Kusto 字串分隔符與 R 字串分隔符之間的衝突:

  • 在 Kusto 查詢中,針對 Kusto 字串常值使用單引號字元 (')。
  • 針對 R 文稿中的 R 字串常值使用雙引號字元 (")。
  • 使用外部數據運算符來取得您已儲存在外部位置的腳本內容,例如 Azure Blob 記憶體或公用 GitHub 存放庫。

    let script = 
        externaldata(script:string)
        [h'https://kustoscriptsamples.blob.core.windows.net/samples/R/sample_script.r']
        with(format = raw);
    range x from 1 to 360 step 1
    | evaluate r(
        typeof(*, fx:double),
        toscalar(script), 
        bag_pack('gain', 100, 'cycles', 4))
    | render linechart 
    

    安裝 R 外掛程式的套件

    請依照下列步驟指示安裝外掛程式基底映像中未包含的套件。

  • 建立 Blob 容器來裝載套件,最好與您的叢集位於相同位置。 例如, https://artifactswestus.blob.core.windows.net/r假設您的叢集位於美國西部。

  • 改變叢集的 註標原則 ,以允許存取該位置。

  • 這項變更需要 AllDatabasesAdmin 許可權。

  • 例如,若要啟用中 https://artifactswestus.blob.core.windows.net/rBlob 的存取權,請執行下列命令:

    .alter-merge cluster policy callout @'[ { "CalloutType": "sandbox_artifacts", "CalloutUriRegex": "artifactswestus\\.blob\\.core\\.windows\\.net/r/","CanCall": true } ]'
    

    下列範例會假設 Windows 環境中的本機 R 計算機。

  • 確認您使用適當的 R 版本 – 目前的 R 沙箱版本為 3.4.4:

    > R.Version()["version.string"]
    $version.string
    [1] "R version 3.4.4 (2018-03-15)"
    

    如有需要,您可以從這裏下載。

  • 啟動 x64 RGui

  • 建立新的空白資料夾,以填入您想要安裝的所有相關套件。 在此範例中 ,我們會安裝 brglm2 套件,因此建立 “C:\brglm2”。

  • 將新建立的資料夾路徑新增至 lib 路徑:

    > .libPaths("C://brglm2")
    
  • 確認新資料夾現在是 .libPaths():

    > .libPaths()
    [1] "C:/brglm2"    "C:/Program Files/R/R-3.4.4/library"
    
  • 完成此設定之後,我們安裝的任何套件都應該新增至這個新資料夾。 讓我們安裝要求的套件及其相依性:

    > install.packages("brglm2")
    

    如果問題「您要從需要編譯的套件來源安裝嗎?」彈出視窗,請回答 「Y」。。

  • 確認新資料夾已新增至 「C:\brglm2」:

    | evaluate r(typeof(*, ver:string), 'library(sandboxutils)\n' 'zipfile.install("brglm2.zip")\n' 'library("brglm2")\n' 'result <- df\n' 'result$ver <-packageVersion("brglm2")\n' ,external_artifacts=bag_pack(brglm2.zip', 'https://artifactswestus.blob.core.windows.net/r/libs.zip?*** REPLACE WITH YOUR SAS TOKEN ***'))
  •