Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
O plug-in R executa uma UDF (função definida pelo usuário) usando um script R.
O script obtém dados tabulares como entrada e produz saída tabular. O tempo de execução do plug-in é hospedado em uma sandbox nos nós do cluster. A sandbox fornece um ambiente isolado e seguro.
Sintaxe
T|evaluate [ hint.distribution= (single | per_node)] r(output_schema , script [,script_parameters] [,external_artifacts])
Saiba mais sobre as convenções de sintaxe.
Parâmetros
| Nome | Digitar | Obrigatória | Descrição |
|---|---|---|---|
| output_schema | string |
✔️ | Um type literal que define o esquema de saída dos dados tabulares, retornados pelo código R. O formato é: typeof([, ...]:. Por exemplo: . Para estender o esquema de entrada, use a seguinte sintaxe: typeof(*, col1:string, col2:long). |
| roteiro | string |
✔️ | O script R válido a ser executado. |
| script_parameters | dynamic |
Um recipiente de propriedades de pares de nome e valor a ser passado para o script R como o dicionário reservado kargs . Para obter mais informações, consulte Variáveis R reservadas. |
|
hint.distribution |
string |
Dica para que a execução do plug-in seja distribuída em vários nós de cluster. O valor padrão é single.
single significa que uma única instância do script será executada em todos os dados da consulta.
per_node significa que, se a consulta antes do bloco R for distribuída, uma instância do script será executada em cada nó sobre os dados que ele contém. |
|
| external_artifacts | dynamic |
Um recipiente de propriedades de pares de nome e URL para artefatos que podem ser acessados no armazenamento em nuvem. Eles podem ser disponibilizados para o script usar em tempo de execução. As URLs referenciadas nesse recipiente de propriedades devem ser incluídas na política de texto explicativo do cluster e em um local disponível publicamente ou conter as credenciais necessárias, conforme explicado em cadeias de conexão de armazenamento. Os artefatos são disponibilizados para o script consumir a partir de um diretório temporário local, .\Temp. Os nomes fornecidos no recipiente de propriedades são usados como os nomes de arquivo locais. Veja Exemplo. Para obter mais informações, consulte Instalar pacotes para o plug-in do R. |
Variáveis R reservadas
As seguintes variáveis são reservadas para interação entre a Linguagem de Consulta Kusto e o código R:
-
df: os dados tabulares de entrada (os valores acimaT), como um DataFrame do R. -
kargs: O valor do argumento script_parameters, como um dicionário R. -
result: Um DataFrame do R criado pelo script do R. O valor se torna os dados tabulares que são enviados para qualquer operador de consulta Kusto que segue o plug-in.
Habilitar o plug-in
- O plug-in está desabilitado por padrão.
- Habilite ou desabilite o plug-in no portal do Azure na guia Configuração do cluster. Para obter mais informações, consulte Gerenciar extensões de idioma no cluster do Azure Data Explorer (versão prévia)
Imagem de área restrita do R
- A imagem da área restrita do R é baseada no R 3.4.4 para Windows e inclui pacotes do pacote R Essentials do Anaconda.
Exemplos
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
Dicas de desempenho
Reduza o conjunto de dados de entrada do plug-in para a quantidade mínima necessária (colunas/linhas).
Use filtros no conjunto de dados de origem usando a Linguagem de Consulta Kusto, quando possível.
Para fazer um cálculo em um subconjunto das colunas de origem, projete apenas essas colunas antes de invocar o plug-in.
Use
hint.distribution = per_nodesempre que a lógica em seu script for distribuível.Você também pode usar o operador de partição para particionar os dados de entrada et.
Sempre que possível, use a Linguagem de Consulta Kusto para implementar a lógica do script R.
Por exemplo:
.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)
Dicas de uso
Para evitar conflitos entre delimitadores de cadeia de caracteres Kusto e delimitadores de cadeia de caracteres R:
- Use caracteres de aspas simples (
') para literais de cadeia de caracteres Kusto em consultas Kusto. - Use caracteres de aspas duplas (
") para literais de cadeia de caracteres R em scripts R.
- Use caracteres de aspas simples (
Use o operador de dados externos para obter o conteúdo de um script armazenado em um local externo, como o armazenamento de blobs do Azure ou um repositório público do GitHub.
Por exemplo:
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
Instalar pacotes para o plug-in do R
Siga estas instruções passo a passo para instalar pacotes que não estão incluídos na imagem base do plug-in.
Pré-requisitos
Crie um contêiner de blob para hospedar os pacotes, preferencialmente no mesmo local que o cluster. Por exemplo,
https://artifactswestus.blob.core.windows.net/rsupondo que o cluster esteja no Oeste dos EUA.Altere a política de texto explicativo do cluster para permitir o acesso a esse local.
Essa alteração requer permissões AllDatabasesAdmin .
Por exemplo, para habilitar o acesso a um blob localizado em
https://artifactswestus.blob.core.windows.net/r, execute o seguinte comando:
.alter-merge cluster policy callout @'[ { "CalloutType": "sandbox_artifacts", "CalloutUriRegex": "artifactswestus\\.blob\\.core\\.windows\\.net/r/","CanCall": true } ]'
Instalar Pacotes
Os recortes de exemplo abaixo pressupõem que o computador R local no ambiente Windows.
Verifique se você está usando a versão R apropriada – a versão atual do R Sandbox é 3.4.4:
> R.Version()["version.string"] $version.string [1] "R version 3.4.4 (2018-03-15)"Se necessário, você pode baixá-lo aqui.
Inicie o RGui x64
Crie uma nova pasta vazia para ser preenchida com todos os pacotes relevantes que você gostaria de instalar. Neste exemplo, instalamos o pacote brglm2, criando "C:\brglm2".
Adicione o caminho da pasta recém-criado aos caminhos da lib:
> .libPaths("C://brglm2")Verifique se a nova pasta agora é o primeiro caminho em .libPaths():
> .libPaths() [1] "C:/brglm2" "C:/Program Files/R/R-3.4.4/library"Uma vez feita essa configuração, qualquer pacote que instalarmos será adicionado a essa nova pasta. Vamos instalar o pacote solicitado e suas dependências:
> install.packages("brglm2")Caso a pergunta "Deseja instalar a partir de fontes os pacotes que precisam de compilação?" apareça, responda "Y".
Verifique se novas pastas foram adicionadas a "C:\brglm2":
Selecione todos os itens nessa pasta e compacte-os, por exemplo, libs.zip (não compacte a pasta pai). Você deve obter uma estrutura de arquivo como esta:
libs.zip:
- brglm2 (pasta)
- enriquecer com (pasta)
- numDeriv (pasta)
Carregar libs.zip para o contêiner de blob definido acima
Chame o
rplug-in.- Especifique o
external_artifactsparâmetro com um recipiente de propriedades de name e referência ao arquivo ZIP (a URL do blob, incluindo um token SAS). - No código r embutido, importe
zipfileesandboxutilschame seuinstall()método com o nome do arquivo ZIP.
- Especifique o
Exemplo
Instale o pacote brglm2:
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 |
Certifique-se de que o nome do arquivo (primeiro valor no par de pacotes) tenha o sufixo *.zip para evitar colisões ao descompactar pastas cujo nome é idêntico ao nome do arquivo.