Udostępnij za pośrednictwem


Odświeżanie za pomocą usługi Azure Automation

Za pomocą usług Azure Automation i Elementów Runbook programu PowerShell można wykonywać automatyczne operacje odświeżania danych na modelach tabelarycznych usługi Azure Analysis.

W przykładzie w tym artykule użyto modułu SqlServer PowerShell. Przykładowy element Runbook programu PowerShell, który demonstruje odświeżanie modelu, znajduje się w dalszej części tego artykułu.

Uwierzytelnianie

Wszystkie wywołania muszą być uwierzytelnione przy użyciu prawidłowego tokenu Identyfikator entra firmy Microsoft (OAuth 2). W tym artykule użyto jednostki usługi (SPN) do uwierzytelniania w usługach Azure Analysis Services. Aby dowiedzieć się więcej, zobacz Tworzenie jednostki usługi przy użyciu witryny Azure Portal.

Wymagania wstępne

Ważne

W poniższym przykładzie założono, że zapora usług Azure Analysis Services jest wyłączona. Jeśli zapora jest włączona, publiczny adres IP inicjatora żądania musi być uwzględniony w regule zapory.

  1. Na koncie usługi Azure Automation kliknij pozycję Moduły, a następnie przeglądaj galerię.

  2. Na pasku wyszukiwania wyszukaj ciąg SqlServer.

    Search Modules

  3. Wybierz pozycję SqlServer, a następnie kliknij pozycję Importuj.

    Import Module

  4. Kliknij przycisk OK.

Tworzenie jednostki usługi (SPN)

Aby dowiedzieć się więcej na temat tworzenia jednostki usługi, zobacz Tworzenie jednostki usługi przy użyciu witryny Azure Portal.

Konfigurowanie uprawnień w usługach Azure Analysis Services

Utworzona jednostka usługi musi mieć uprawnienia administratora serwera na serwerze. Aby dowiedzieć się więcej, zobacz Dodawanie jednostki usługi do roli administratora serwera.

Projektowanie elementu Runbook usługi Azure Automation

  1. Na koncie usługi Automation utwórz zasób Poświadczenia, który będzie używany do bezpiecznego przechowywania jednostki usługi.

    Screenshot that shows the

  2. Wprowadź szczegóły poświadczenia. W polu Nazwa użytkownika wprowadź identyfikator aplikacji jednostki usługi (appid), a następnie w polu Hasło wprowadź klucz tajny jednostki usługi.

    Create credential

  3. Zaimportuj element Runbook usługi Automation.

    Screenshot that shows the

  4. Wyszukaj plik Refresh-Model.ps1, podaj nazwę i opis, a następnie kliknij przycisk Utwórz.

    Uwaga

    Użyj skryptu z sekcji Przykładowy element Runbook programu PowerShell w dolnej części tego dokumentu, aby utworzyć plik o nazwie Refresh-Model.ps1 i zapisać go na komputerze lokalnym w celu zaimportowania do elementu Runbook.

    Import Runbook

  5. Po utworzeniu elementu Runbook nastąpi automatyczne przejście do trybu edycji. Wybierz Publikuj.

    Publish Runbook

    Uwaga

    Zasób poświadczeń, który został utworzony wcześniej, jest pobierany przez element Runbook przy użyciu polecenia Get-AutomationPSCredential . To polecenie jest następnie przekazywane do polecenia Invoke-ProcessASADatabase programu PowerShell w celu przeprowadzenia uwierzytelniania w usługach Azure Analysis Services.

  6. Przetestuj element Runbook, klikając pozycję Uruchom.

    Screenshot that shows the

  7. Wypełnij parametry DATABASENAME, ANALYSISSERVER i REFRESHTYPE, a następnie kliknij przycisk OK. Parametr WEBHOOKDATA nie jest wymagany, gdy element Runbook jest uruchamiany ręcznie.

    Start the Runbook

Jeśli element Runbook został wykonany pomyślnie, otrzymasz dane wyjściowe podobne do następujących:

Successful Run

Korzystanie z samodzielnego elementu Runbook usługi Azure Automation

Element Runbook można skonfigurować do wyzwalania odświeżania modelu usług Azure Analysis Services zgodnie z harmonogramem.

Można to skonfigurować w następujący sposób:

  1. W elemecie Runbook usługi Automation kliknij pozycję Harmonogramy, a następnie dodaj harmonogram.

    Create schedule

  2. Kliknij pozycję Harmonogram>Utwórz nowy harmonogram, a następnie wypełnij szczegóły.

    Configure schedule

  3. Kliknij pozycję Utwórz.

  4. Wypełnij parametry harmonogramu. Będą one używane za każdym razem, gdy wyzwalacze elementu Runbook. Parametr WEBHOOKDATA powinien pozostać pusty podczas uruchamiania za pośrednictwem harmonogramu.

    Configure parameters

  5. Kliknij przycisk OK.

Korzystanie z usługi Data Factory

Aby korzystać z elementu Runbook przy użyciu usługi Azure Data Factory, najpierw utwórz element webhook dla elementu Runbook. Element webhook udostępni adres URL, który można wywołać za pośrednictwem działania internetowego usługi Azure Data Factory.

Ważne

Aby utworzyć element webhook, stan elementu Runbook musi być opublikowany.

  1. W elemecie Runbook usługi Automation kliknij pozycję Elementy webhook, a następnie kliknij pozycję Dodaj element webhook.

    Add Webhook

  2. Nadaj elementowi webhook nazwę i wygaśnięcie. Nazwa identyfikuje tylko element webhook wewnątrz elementu Runbook usługi Automation, ale nie stanowi części adresu URL.

    Uwaga

    Przed zamknięciem kreatora należy skopiować adres URL, ponieważ nie można go odzyskać po zamknięciu.

    Configure Webhook

    Parametry elementu webhook mogą pozostać puste. Podczas konfigurowania działania internetowego usługi Azure Data Factory parametry można przekazać do treści wywołania internetowego.

  3. W usłudze Data Factory skonfiguruj działanie internetowe

Przykład

Example Web Activity

Adres URL jest adresem URL utworzonym na podstawie elementu webhook.

Treść jest dokumentem JSON, który powinien zawierać następujące właściwości:

Właściwości Wartość
AnalysisServicesDatabase Nazwa bazy danych usług Azure Analysis Services
Przykład: AdventureWorksDB
AnalysisServicesServer Nazwa serwera usług Azure Analysis Services.
Przykład: https://westus.asazure.windows.net/servers/myserver/models/AdventureWorks/
DatabaseRefreshType Typ odświeżania do wykonania.
Przykład: pełny

Przykładowa treść JSON:

{
    "AnalysisServicesDatabaseName": "AdventureWorksDB",
    "AnalysisServicesServer": "asazure://westeurope.asazure.windows.net/MyAnalysisServer",
    "DatabaseRefreshType": "Full"
}

Te parametry są definiowane w skryscie programu PowerShell elementu Runbook. Po wykonaniu działania internetowego przekazany ładunek JSON to WEBHOOKDATA.

Jest to deserializowane i przechowywane jako parametry programu PowerShell, które są następnie używane przez polecenie Invoke-ProcessASDatabase programu PowerShell.

Deserialized Webhook

Używanie hybrydowego procesu roboczego z usługami Azure Analysis Services

Maszyna wirtualna platformy Azure ze statycznym publicznym adresem IP może służyć jako hybrydowy proces roboczy usługi Azure Automation. Ten publiczny adres IP można następnie dodać do zapory usług Azure Analysis Services.

Ważne

Upewnij się, że publiczny adres IP maszyny wirtualnej jest skonfigurowany jako statyczny.

Aby dowiedzieć się więcej na temat konfigurowania hybrydowych procesów roboczych usługi Azure Automation, zobacz Instalacja hybrydowego procesu roboczego elementu Runbook.

Po skonfigurowaniu hybrydowego procesu roboczego utwórz element webhook zgodnie z opisem w sekcji Korzystanie z usługi Data Factory. Jedyną różnicą jest wybranie opcji Uruchom w>hybrydowym procesie roboczym podczas konfigurowania elementu webhook.

Przykładowy element webhook korzystający z hybrydowego procesu roboczego:

Example Hybrid Worker Webhook

Przykładowy element Runbook programu PowerShell

Poniższy fragment kodu to przykład przeprowadzania odświeżania modelu usług Azure Analysis Services przy użyciu elementu Runbook programu PowerShell.

param
(
    [Parameter (Mandatory = $false)]
    [object] $WebhookData,

    [Parameter (Mandatory = $false)]
    [String] $DatabaseName,
    [Parameter (Mandatory = $false)]
    [String] $AnalysisServer,
    [Parameter (Mandatory = $false)]
    [String] $RefreshType
)

$_Credential = Get-AutomationPSCredential -Name "ServicePrincipal"

# If runbook was called from Webhook, WebhookData will not be null.
if ($WebhookData)
{ 
    # Retrieve AAS details from Webhook request body
    $atmParameters = (ConvertFrom-Json -InputObject $WebhookData.RequestBody)
    Write-Output "CredentialName: $($atmParameters.CredentialName)"
    Write-Output "AnalysisServicesDatabaseName: $($atmParameters.AnalysisServicesDatabaseName)"
    Write-Output "AnalysisServicesServer: $($atmParameters.AnalysisServicesServer)"
    Write-Output "DatabaseRefreshType: $($atmParameters.DatabaseRefreshType)"
    
    $_databaseName = $atmParameters.AnalysisServicesDatabaseName
    $_analysisServer = $atmParameters.AnalysisServicesServer
    $_refreshType = $atmParameters.DatabaseRefreshType
 
    Invoke-ProcessASDatabase -DatabaseName $_databaseName -RefreshType $_refreshType -Server $_analysisServer -ServicePrincipal -Credential $_credential
}
else 
{
    Invoke-ProcessASDatabase -DatabaseName $DatabaseName -RefreshType $RefreshType -Server $AnalysisServer -ServicePrincipal -Credential $_Credential
}

Następne kroki

Samples
Interfejs API REST