Aracılığıyla paylaş


R eklentisi (Önizleme)

R eklentisi R betiği kullanarak kullanıcı tanımlı bir işlev (UDF) çalıştırır.

Betik, girdi olarak tablosal verileri alır ve tablosal çıkış üretir. Eklentinin çalışma zamanı, kümenin düğümlerindeki bir korumalı alanda barındırılır. Korumalı alan, yalıtılmış ve güvenli bir ortam sağlar.

Syntax

T|evaluate [hint.distribution= (single | per_node)] r(output_schema,betiği [,script_parameters] [,external_artifacts])

Söz dizimi kuralları hakkında daha fazla bilgi edinin.

Parametreler

Ad Tür Gerekli Açıklama
output_schema string ✔️ type R kodu tarafından döndürülen tablosal verilerin çıkış şemasını tanımlayan değişmez değer. Biçim: typeof(ColumnName:ColumnType[, ...]). Örneğin: typeof(col1:string, col2:long). Giriş şemasını genişletmek için aşağıdaki söz dizimini kullanın: typeof(*, col1:string, col2:long).
Komut dosyası string ✔️ Yürütülecek geçerli R betiği.
script_parameters dynamic R betiğine ayrılmış kargs sözlük olarak geçirilecek ad ve değer çiftlerinden oluşan bir özellik paketi. Daha fazla bilgi için bkz . Ayrılmış R değişkenleri.
hint.distribution string Eklentinin yürütülmesinin birden çok küme düğümüne dağıtılmasıyla ilgili ipucu. single varsayılan değerdir. single , betiğin tek bir örneğinin sorgu verilerinin tamamı üzerinde çalıştırılacağı anlamına gelir. per_node R bloğundan önceki sorgu dağıtılırsa, betiğin bir örneğinin içerdiği veriler üzerinde her düğümde çalıştırılacağı anlamına gelir.
external_artifacts dynamic Bulut depolama alanından erişilebilen yapıtlar için ad ve URL çiftlerinden oluşan bir özellik paketi. Betiğin çalışma zamanında kullanılabilmesi için kullanılabilir hale getirilebilir. Bu özellik paketinde başvuruda bulunulan URL'lerin kümenin açıklama balonu ilkesine ve genel kullanıma açık bir konuma eklenmesi veya depolama bağlantı dizelerinde açıklandığı gibi gerekli kimlik bilgilerini içermesi gerekir. Yapıtlar, betiğin yerel geçici bir dizinden .\Temptüketmesi için kullanılabilir hale getirilir. Özellik paketinde sağlanan adlar yerel dosya adları olarak kullanılır. Bkz. Örnek. Daha fazla bilgi için bkz. R eklentisi için paketleri yükleme.

Ayrılmış R değişkenleri

Aşağıdaki değişkenler Kusto Sorgu Dili ile R kodu arasındaki etkileşim için ayrılmıştır:

  • df: Giriş tablosal verileri (yukarıdaki değerleri T ), R DataFrame olarak.
  • kargs: R sözlüğü olarak script_parameters bağımsız değişkeninin değeri.
  • result: R betiği tarafından oluşturulan bir R DataFrame. Değer, eklentiyi izleyen herhangi bir Kusto sorgu işlecine gönderilen tablosal veriler olur.

Eklentiyi etkinleştirme

R korumalı alan görüntüsü

Örnekler

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 

Sinüs tanıtımı.

Performans ipuçları

  • Eklentinin giriş veri kümesini gereken minimum miktara (sütunlar/satırlar) düşürün.

  • Mümkün olduğunda Kusto Sorgu Dili kullanarak kaynak veri kümesindeki filtreleri kullanın.

  • Kaynak sütunların bir alt kümesinde hesaplama yapmak için eklentiyi çağırmadan önce yalnızca bu sütunları yansıtın.

  • Betiğinizdeki mantık dağıtılabilir olduğunda kullanın hint.distribution = per_node .

  • Giriş verilerini bölümlendirmek için bölüm işlecini de kullanabilirsiniz.

  • Mümkün olduğunda R betiğinizin mantığını uygulamak için Kusto Sorgu Dili kullanın.

    Örnek:

    .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)
    

Kullanım ipuçları

  • Kusto dize sınırlayıcıları ile R dize sınırlayıcıları arasındaki çakışmaları önlemek için:

    • Kusto sorgularında Kusto dize değişmez değerleri için tek tırnak karakterleri (') kullanın.
    • R betiklerinde R dizesi değişmez değerleri için çift tırnak karakterleri (") kullanın.
  • Azure blob depolama veya genel GitHub deposu gibi bir dış konumda depoladığınız bir betiğin içeriğini almak için dış veri işlecini kullanın.

    Örnek:

    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 eklentisi için paketleri yükleme

Eklentinin temel görüntüsüne dahil olmayan paketleri yüklemek için bu adım adım yönergeleri izleyin.

Önkoşullar

  1. Paketleri barındırmak için tercihen kümenizle aynı yerde bir blob kapsayıcısı oluşturun. Örneğin, https://artifactswestus.blob.core.windows.net/rkümenizin Batı ABD'de olduğunu varsayarsak.

  2. Bu konuma erişime izin vermek için kümenin belirtme çizgisi ilkesini değiştirin.

    • Bu değişiklik Için AllDatabasesAdmin izinleri gerekir.

    • Örneğin, içinde https://artifactswestus.blob.core.windows.net/rbulunan bir bloba erişimi etkinleştirmek için aşağıdaki komutu çalıştırın:

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

Paketleri yükleme

Aşağıdaki örnek kod parçacıklarında Windows ortamında yerel R makinesinin olduğu varsayılır.

  1. Uygun R sürümünü kullandığınızı doğrulayın; geçerli R Korumalı Alanı sürümü 3.4.4' dür:

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

    Gerekirse buradan indirebilirsiniz.

  2. x64 RGui'yi başlatma

  3. Yüklemek istediğiniz tüm ilgili paketlerle doldurulacak yeni bir boş klasör oluşturun. Bu örnekte brglm2 paketini yüklediğimiz için "C:\brglm2" oluşturulur.

  4. Yeni oluşturulan klasör yolunu lib yollarına ekleyin:

    > .libPaths("C://brglm2")
    
  5. Yeni klasörün artık .libPaths() içindeki ilk yol olduğunu doğrulayın:

    > .libPaths()
    
    [1] "C:/brglm2"    "C:/Program Files/R/R-3.4.4/library"
    
    
  6. Bu kurulum tamamlandıktan sonra, yüklediğimiz tüm paketler bu yeni klasöre eklenecektir. şimdi istenen paketi ve bağımlılıklarını yükleyelim:

    > install.packages("brglm2")
    

    "Kaynaklardan derlemesi gereken paketleri yüklemek istiyor musunuz?" sorusu açılırsa "Y" yanıtını verin.

  7. Yeni klasörlerin "C:\brglm2" öğesine eklendiğini doğrulayın:

    Kitaplık dizini içeriğinin ekran görüntüsü.

  8. Bu klasördeki tüm öğeleri seçin ve libs.zip (üst klasörü sıkıştırma) gibi öğelere sıkıştırın. Aşağıdaki gibi bir arşiv yapısı almalısınız:

    libs.zip:

    • brglm2 (klasör)
    • enrichwith (klasör)
    • numDeriv (klasör)
  9. libs.zip yukarıda ayarlanan blob kapsayıcısına yükleme

  10. Eklentiyi çağırın r .

    • Parametreyi external_artifacts ad ve zip dosyasına (SAS belirteci de dahil olmak üzere blobun URL'si) başvuru içeren bir özellik paketiyle belirtin.
    • Satır içi r kodunuzda öğesini içeri aktarın zipfilesandboxutils ve yöntemini zip dosyasının adıyla çağırın install() .

Örnek

brglm2 paketini yükleyin:

print x=1
| 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 ***'))
x Ver
1 1.8.2

Arşiv adının (paket çiftindeki ilk değer) *.zip soneki olduğundan emin olun ve adı arşiv adıyla aynı olan klasörlerin sıkıştırmasını açarken çakışmaları önleyin.


Bu özellik desteklenmez.