Azure Automation을 사용하여 새로 고침
Azure Automation과 PowerShell Runbook을 사용하여 Azure Analysis 테이블 형식 모델에서 데이터 새로 고침 작업을 자동으로 수행할 수 있습니다.
이 문서의 예에서는 SqlServer PowerShell 모듈을 사용합니다. 모델 새로 고침을 보여주는 샘플 PowerShell Runbook이 이 문서의 뒷부분에서 제공됩니다.
인증
모든 호출은 유효한 Microsoft Entra ID(OAuth 2) 토큰을 사용하여 인증되어야 합니다. 이 문서의 예에서는 SPN(서비스 사용자 이름)을 사용하여 Azure Analysis Services에 인증합니다. 자세한 내용은 Azure Portal에서 서비스 주체 만들기를 참조하세요.
필수 조건
Important
다음 예에서는 Azure Analysis Services 방화벽을 사용하지 않는다고 가정합니다. 방화벽이 사용되는 경우 요청 개시 장치의 공용 IP 주소가 방화벽 규칙에 포함돼야 합니다.
PowerShell 갤러리에서 SqlServer 모듈을 설치합니다.
Azure Automation 계정에서 모듈과 갤러리 찾아보기를 차례로 클릭합니다.
검색 창에서 SqlServer를 검색합니다.
SqlServer를 선택한 다음, 가져오기를 클릭합니다.
확인을 클릭합니다.
SPN(서비스 사용자 이름) 만들기
서비스 사용자 만들기에 대해 알아보려면 Azure Portal을 사용하여 서비스 사용자 만들기를 참조하세요.
Azure Analysis Services에서 권한 구성
직접 만든 서비스 사용자에게는 서버에 대한 서버 관리자 권한이 있어야 합니다. 자세히 알아보려면 서버 관리자 역할에 서비스 사용자 추가를 참조하세요.
Azure Automation Runbook 디자인
Automation 계정에서 서비스 사용자를 안전하게 저장하는 데 사용할 자격 증명 리소스를 만듭니다.
자격 증명에 대한 세부 정보를 입력합니다. 사용자 이름에 서비스 사용자 애플리케이션 ID(appid)를 입력하고 암호에는 서비스 사용자 비밀을 입력합니다.
Automation Runbook을 가져옵니다.
Refresh-Model.ps1 파일을 찾고 이름과 설명을 입력한 다음, 만들기를 클릭합니다.
참고 항목
이 문서의 하단에 있는 샘플 PowerShell Runbook 섹션의 스크립트를 사용하여 Refresh-Model.ps1이라는 파일을 만들고 로컬 머신에 저장하여 Runbook으로 가져옵니다.
Runbook이 생성되면 편집 모드로 자동 전환됩니다. 게시를 선택합니다.
참고 항목
이전에 만든 자격 증명 리소스는 Get-AutomationPSCredential 명령을 사용하여 Runbook을 통해 검색됩니다. 그런 다음, 이 명령은 Invoke-ProcessASADatabase PowerShell 명령으로 전달되어 Azure Analysis Services에 대한 인증을 수행합니다.
시작을 클릭하여 Runbook을 테스트합니다.
DATABASENAME, ANALYSISSERVER 및 REFRESHTYPE 매개 변수를 입력한 다음, 확인을 클릭합니다. Runbook을 수동으로 실행하는 경우에는 WEBHOOKDATA 매개 변수가 필요하지 않습니다.
Runbook 실행에 성공하면 다음과 같은 출력이 표시됩니다.
자체 포함 Azure Automation Runbook 사용
예정된 시간에 Azure Analysis Services 모델 새로 고침을 트리거하도록 Runbook을 구성할 수 있습니다.
다음과 같이 구성할 수 있습니다.
Automation Runbook에서 일정과 일정 추가를 차례로 클릭합니다.
일정>새 일정 만들기를 클릭한 다음, 세부 정보를 입력합니다.
만들기를 클릭합니다.
일정에 대한 매개 변수를 입력합니다. Runbook이 트리거될 때마다 사용됩니다. 일정을 통해 실행할 때는 WEBHOOKDATA 매개 변수를 비워둬야 합니다.
확인을 클릭합니다.
Data Factory에서 사용
Azure Data Factory를 사용하여 Runbook을 사용하려면 먼저 Runbook에 대한 Webhook를 만듭니다. Webhook은 Azure Data Factory 웹 작업을 통해 호출할 수 있는 URL을 제공합니다.
Important
Webhook을 만들려면 Runbook의 상태가 게시됨이어야 합니다.
Automation Runbook에서 Webhook를 클릭한 후 Webhook 추가를 클릭합니다.
Webhook에 이름과 만료 정보를 지정합니다. 이름은 Automation Runbook 내부에서 Webhook만 식별하며 URL의 일부를 구성하지는 않습니다.
주의
마법사를 닫기 전에 URL을 복사해야 합니다. 닫은 후에는 되돌릴 수 없습니다.
Webhook에 대한 매개 변수는 비워둘 수 있습니다. Azure Data Factory 웹 작업을 구성할 때 매개 변수는 웹 호출의 본문으로 전달될 수 있습니다.
Data Factory에서 웹 작업을 구성합니다.
예시
URL은 Webhook에서 만든 URL입니다.
본문은 JSON 문서이며, 다음 속성을 포함해야 합니다.
속성 | 값 |
---|---|
AnalysisServicesDatabase | Azure Analysis Services 데이터베이스의 이름 예제: AdventureWorksDB |
AnalysisServicesServer | Azure Analysis Services 서버 이름 예: https://westus.asazure.windows.net/servers/myserver/models/AdventureWorks/ |
DatabaseRefreshType | 수행할 새로 고침 유형 예제: 전체 |
JSON 본문 예:
{
"AnalysisServicesDatabaseName": "AdventureWorksDB",
"AnalysisServicesServer": "asazure://westeurope.asazure.windows.net/MyAnalysisServer",
"DatabaseRefreshType": "Full"
}
이러한 매개 변수는 Runbook PowerShell 스크립트에 정의되어 있습니다. 웹 작업이 실행될 때 전달된 JSON 페이로드는 WEBHOOKDATA입니다.
이것은 역직렬화되어 PowerShell 매개 변수로 저장된 다음, Invoke-ProcessASDatabase PowerShell 명령에 사용됩니다.
Azure Analysis Services에서 Hybrid Worker 사용
고정 공용 IP 주소를 사용하는 Azure Virtual Machine은 Azure Automation Hybrid Worker로 사용할 수 있습니다. 이러한 공용 IP 주소는 Azure Analysis Services 방화벽에 추가할 수 있습니다.
Important
Virtual Machine 공용 IP 주소가 고정으로 구성되어 있는지 확인하십시오.
Azure Automation Hybrid Worker 구성에 대해 알아보려면 Hybrid Runbook Worker 설치를 참조하세요.
Hybrid Worker가 구성되면 Data Factory에서 사용 섹션의 설명에 따라 Webhook를 만듭니다. 여기서 유일한 차이점은 Webhook를 구성할 때 실행 위치>Hybrid Worker 옵션을 선택하는 것입니다.
Hybrid Worker를 사용하는 Webhook 예:
샘플 PowerShell Runbook
다음 코드 조각은 PowerShell Runbook을 사용하여 Azure Analysis Services 모델 새로 고침을 수행하는 방법의 예입니다.
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
}