Usar o Azure Functions para gerenciar recursos de computação para seu pool SQL dedicado (anteriormente SQL DW) no Azure Synapse Analytics
Este tutorial usa o Azure Functions para gerenciar recursos de computação para um pool SQL dedicado (anteriormente SQL DW) no Azure Synapse Analytics.
Para usar um Aplicativo de Função do Azure com um pool SQL dedicado (anteriormente SQL DW), você deve criar uma Conta Principal de Serviço. A Conta Principal de Serviço precisa de acesso de colaborador sob a mesma assinatura que sua instância dedicada do pool SQL (anteriormente SQL DW).
Implantar o dimensionamento baseado em temporizador com um modelo do Azure Resource Manager
Para implantar o modelo, você precisa das seguintes informações:
- Nome do grupo de recursos em que sua instância dedicada do pool SQL (anteriormente SQL DW) está
- Nome do servidor em que sua instância dedicada do pool SQL (anteriormente SQL DW) está
- Nome da instância dedicada do pool SQL (anteriormente SQL DW)
- ID do locatário (ID do diretório) do seu ID do Microsoft Entra
- ID da subscrição
- ID da Aplicação Principal de Serviço
- Chave do Segredo do Principal de Serviço
Depois de ter as informações anteriores, implante este modelo:
Depois de implantar o modelo, você deve encontrar três novos recursos: um Plano de Serviço de Aplicativo do Azure gratuito, um plano de Aplicativo de Função baseado em consumo e uma conta de armazenamento que lida com o log e a fila de operações. Continue a ler as outras secções para ver como modificar as funções implementadas de acordo com as suas necessidades.
Alterar o tempo da operação de escala
Navegue para o serviço Function App. Se tiver implementado o modelo com os valores predefinidos, este serviço deverá chamar-se DWOperations. Assim que Function App estiver aberto, deverá ver cinco funções implementadas no seu serviço do Function App.
Selecione DWScaleDownTrigger ou DWScaleUpTrigger para aumentar ou diminuir a escala. No menu suspenso, selecione Integrar.
Atualmente, o valor apresentado deverá indicar %ScaleDownTime% ou %ScaleUpTime%. Estes valores indicam que a agenda se baseia nos valores definidos nas Definições da Aplicação. Por enquanto, você pode ignorar esse valor e alterar a programação para o horário de sua preferência com base nas próximas etapas.
Na área de agenda, adicione a expressão CRON que você gostaria de refletir com que frequência deseja que o Azure Synapse Analytics seja ampliado.
O valor de
schedule
é uma expressão CRON que inclui estes seis campos:{second} {minute} {hour} {day} {month} {day-of-week}
Por exemplo, "0 30 9 * * 1-5" refletiria um gatilho todos os dias da semana às 9h30. Para obter mais informações, veja os exemplos de agendas do Azure Functions.
Alterar o nível de computação
Navegue para o serviço Function App. Se tiver implementado o modelo com os valores predefinidos, este serviço deverá chamar-se DWOperations. Assim que Function App estiver aberto, deverá ver cinco funções implementadas no seu serviço do Function App.
Selecione DWScaleDownTrigger ou DWScaleUpTrigger para aumentar ou reduzir o valor de computação. Após selecionar as funções, o painel deve mostrar o ficheiro index.js.
Altere o valor de ServiceLevelObjective para o nível desejado e selecione salvar. O ServiceLevelObjective é o nível de computação para o qual sua instância de data warehouse será dimensionada com base no cronograma definido na seção Integrar.
Utilizar a pausa ou a retoma em vez do dimensionamento
Atualmente, as funções ligadas por predefinição são DWScaleDownTrigger e DWScaleUpTrigger. Em alternativa, se pretender utilizar a funcionalidade de pausa e retoma, pode ativar DWPauseTrigger ou DWResumeTrigger.
Navegue para o painel Functions.
Selecione na alternância deslizante para os gatilhos correspondentes que você gostaria de ativar.
Navegue para os separadores Integrate de cada acionador, para alterar as agendas dos mesmos.
Nota
A diferença funcional entre os gatilhos de dimensionamento e os gatilhos de pausa/retomada é a mensagem enviada para a fila. Para obter mais informações, consulte Adicionar uma nova função de gatilho.
Adicionar uma nova função de acionador
Atualmente, o modelo inclui apenas duas funções de dimensionamento. Com essas funções, ao longo de um dia, você só pode reduzir a escala uma vez e aumentar uma vez. Para um controle mais granular, como reduzir a escala várias vezes por dia ou ter um comportamento de dimensionamento diferente nos fins de semana, você precisa adicionar outro gatilho.
Crie uma função em branco nova. Selecione o botão perto do local Funções para mostrar o + painel de modelo de função.
Em Language, selecione JavaScript e, em seguida, TimerTrigger.
Dê um nome à função e defina a agenda. A imagem mostra como um utilizador pode acionar a função todos os sábados à meia-noite (sexta ao fim do dia ).
Copie o conteúdo de index.js de uma das outras funções de acionador.
Defina sua variável de operação para o comportamento desejado da seguinte maneira:
// Resume the dedicated SQL pool (formerly SQL DW) instance var operation = { "operationType": "ResumeDw" } // Pause the dedicated SQL pool (formerly SQL DW) instance var operation = { "operationType": "PauseDw" } // Scale the dedicated SQL pool (formerly SQL DW)l instance to DW600c var operation = { "operationType": "ScaleDw", "ServiceLevelObjective": "DW600c" }
Agendamento complexo
Esta seção demonstra brevemente o que é necessário para obter um agendamento mais complexo dos recursos de pausa, retomada e dimensionamento.
Exemplo 1
Escale diariamente às 8h para DW600c e diminua às 20h para DW200c.
Function | Agenda | Operação |
---|---|---|
Function1 | 0 0 8 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"} |
Function2 | 0 0 20 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"} |
Exemplo 2
Escale diariamente às 8h para DW1000c, diminua uma vez para DW600 às 16h e diminua às 22h para DW200c.
Function | Agenda | Operação |
---|---|---|
Function1 | 0 0 8 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"} |
Function2 | 0 0 16 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"} |
Function3 | 0 0 22 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"} |
Exemplo 3
Aumente a escala às 8h para DW1000c, diminua uma vez para DW600c às 16h nos dias úteis. É colocado em pausa à sexta-feira às 23:00 e retomado às 7:00 de segunda-feira.
Function | Agenda | Operação |
---|---|---|
Function1 | 0 0 8 * * 1-5 | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"} |
Function2 | 0 0 16 * * 1-5 | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"} |
Function3 | 0 0 23 * * 5 | var operation = {"operationType": "PauseDw"} |
Function4 | 0 0 7 * * 1 | var operation = {"operationType": "ResumeDw"} |
Próximos passos
Saiba mais sobre o gatilho de temporizador Azure Functions.
Consulte o repositório de exemplos do pool SQL dedicado (anteriormente SQL DW).