Condividi tramite


Analysis Services Personalization Extensions

Si applica a: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

SQL Server SQL Server Analysis Services estensioni di personalizzazione sono la base dell'idea di implementare un'architettura plug-in. In un'architettura plug-in è possibile sviluppare dinamicamente nuovi oggetti cubo e funzionalità e condividerli facilmente con gli altri sviluppatori. Di conseguenza, SQL Server Analysis Services estensioni di personalizzazione forniscono le funzionalità che consentono di ottenere quanto segue:

  • Progettazione dinamica e distribuzione Subito dopo aver progettato e distribuito SQL Server Analysis Services estensioni di personalizzazione, gli utenti hanno accesso agli oggetti e alle funzionalità all'inizio della sessione utente successiva.

  • Indipendenza dell'interfaccia Indipendentemente dall'interfaccia usata per creare le estensioni di personalizzazione SQL Server Analysis Services, gli utenti possono usare qualsiasi interfaccia per accedere agli oggetti e alle funzionalità.

  • Il contesto della sessione SQL Server Analysis Services estensioni di personalizzazione non sono oggetti permanenti nell'infrastruttura esistente e non richiedono la rielaborazione del cubo. Vengono esposti e creati per l'utente al momento della connessione al database e rimangono disponibili per la durata della sessione dell'utente.

  • Distribuzione rapida Condividere SQL Server Analysis Services estensioni di personalizzazione con altri sviluppatori di software senza dover esaminare specifiche dettagliate su dove o come trovare questa funzionalità estesa.

SQL Server Analysis Services estensioni di personalizzazione hanno molti usi. Ad esempio, la propria azienda dispone di vendite che hanno valute diverse. Viene creato un membro calcolato che restituisce le vendite consolidate nella valuta locale della persona che accede al cubo. Tale membro viene creato come estensione della personalizzazione. Il membro calcolato viene quindi condiviso con un gruppo di utenti. Una volta condiviso, gli utenti dispongono dell'accesso immediato al membro calcolato non appena si connettono al server, anche se non utilizzano la stessa interfaccia utilizzata durante la creazione del membro calcolato.

SQL Server Analysis Services estensioni di personalizzazione sono una semplice ed elegante modifica all'architettura di assembly gestita esistente e vengono esposte in tutta la SQL Server Analysis Services modello a oggetti Microsoft.AnalysisServices.AdomdServer, sintassi MDX (Multidimensional Expressions) e set di righe dello schema.

Architettura logica

L'architettura per SQL Server Analysis Services estensioni di personalizzazione si basa sull'architettura degli assembly gestiti e sui quattro elementi di base seguenti:

Attributo personalizzato [PlugInAttribute]
Quando si avvia il servizio, SQL Server Analysis Services carica gli assembly necessari e determina quali classi hanno l'attributo personalizzato Microsoft.AnalysisServices.AdomdServer.PlugInAttribute.

Nota

.NET Framework definisce gli attributi personalizzati come modo per descrivere il codice e influire sul comportamento in fase di esecuzione. Per altre informazioni, vedere l'argomento "Panoramica degli attributi" nella Guida per sviluppatori di .NET Framework su MSDN.

Per tutte le classi con l'attributo personalizzato Microsoft.AnalysisServices.AdomdServer.PlugInAttribute, SQL Server Analysis Services richiama i costruttori predefiniti. La richiamata di tutti i costruttori all'avvio fornisce un percorso comune, indipendente dalle attività dell'utente, dal quale è possibile compilare nuovi oggetti.

Oltre a creare una piccola cache di informazioni sulla creazione e sulla gestione delle estensioni di personalizzazione, il costruttore della classe in genere sottoscrive gli eventi Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened e Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing. Se la sottoscrizione di tali eventi non riesce, la classe potrebbe essere erroneamente contrassegnata per la pulizia da parte del Garbage Collector del Common Language Runtime.

Contesto di sessione
Per gli oggetti basati sulle estensioni di personalizzazione, SQL Server Analysis Services crea un ambiente di esecuzione durante la sessione client e compila in modo dinamico la maggior parte di tali oggetti in questo ambiente. Come qualsiasi altro assembly CLR, tale ambiente di esecuzione dispone anche dell'accesso ad altre funzioni e stored procedure. Al termine della sessione utente, SQL Server Analysis Services rimuove gli oggetti creati dinamicamente e chiude l'ambiente di esecuzione.

evento
La creazione di oggetti viene attivata dagli eventi di sessione On-Cube-OpenedCubeOpened e On-Cube-ClosingCubeClosing.

La comunicazione tra client e server si verifica attraverso eventi specifici. Tali eventi informano il client delle situazioni che portano alla compilazione degli oggetti del client. L'ambiente del client viene creato dinamicamente utilizzando due set di eventi: eventi di sessione ed eventi del cubo.

Gli eventi di sessione sono associati all'oggetto server. Quando un client accede a un server, SQL Server Analysis Services crea una sessione e attiva l'evento Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened. Quando un client termina la sessione sul server, SQL Server Analysis Services attiva l'evento Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing.

Gli eventi del cubo sono associati all'oggetto connessione. La connessione a un cubo attiva l'evento Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened. La chiusura della connessione a un cubo, chiudendo il cubo o passando a un cubo diverso, attiva un evento Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing.

Tracciabilità e gestione degli errori
Tutte le attività sono tracciabili tramite SQL Server Profiler. Gli errori non gestiti vengono segnalati al registro eventi di Windows.

La creazione e la gestione degli oggetti sono indipendenti dall'architettura e rappresentano l'unica responsabilità degli sviluppatori degli oggetti.

Base dell'infrastruttura

SQL Server Analysis Services estensioni di personalizzazione sono basate su componenti esistenti. Di seguito è riportato un riepilogo dei miglioramenti forniti dalla funzionalità delle estensioni della personalizzazione.

Assembly

L'attributo personalizzato Microsoft.AnalysisServices.AdomdServer.PlugInAttribute può essere aggiunto agli assembly personalizzati per identificare SQL Server Analysis Services classi di estensioni di personalizzazione.

Modifiche al modello a oggetti AdomdServer

Gli oggetti seguenti nel modello a oggetti Microsoft.AnalysisServices.AdomdServer sono stati migliorati o aggiunti al modello.

Nuova classe AdomdConnection

La classe Microsoft.AnalysisServices.AdomdServer.AdomdConnection è nuova ed espone diverse estensioni di personalizzazione tramite proprietà ed eventi.

Proprietà

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.SessionID, valore stringa di sola lettura che rappresenta l'ID sessione della connessione corrente.

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.ClientCulture, riferimento di sola lettura alle impostazioni cultura client associate alla sessione corrente.

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.User, riferimento di sola lettura all'interfaccia di identità che rappresenta l'utente corrente.

Eventi

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing

Nuove proprietà nella classe del contesto

La classe Microsoft.AnalysisServices.AdomdServer.Context ha due nuove proprietà:

  • Microsoft.AnalysisServices.AdomdServer.Context.Server, riferimento di sola lettura al nuovo oggetto server.

  • Microsoft.AnalysisServices.AdomdServer.Context.CurrentConnection, riferimento di sola lettura al nuovo oggetto Microsoft.AnalysisServices.AdomdServer.AdomdConnection.

Nuova classe server

Microsoft.AnalysisServices.AdomdServer.Server sia le proprietà della classe che gli eventi.

Proprietà

  • Microsoft.AnalysisServices.AdomdServer.Server.Name, valore stringa di sola lettura che rappresenta il nome del server.

  • Microsoft.AnalysisServices.AdomdServer.Server.Culture, riferimento di sola lettura alle impostazioni cultura globali associate al server.

Eventi

  • Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened

  • Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing

Classe AdomdCommand

La classe Microsoft.AnalysisServices.AdomdServer.AdomdCommand supporta ora i comandi MDX seguenti:

Estensioni MDX e miglioramenti

Il comando CREATE MEMBER viene migliorato con la proprietà didascalia, la proprietà display_folder e la proprietà associated_measure_group.

Il comando UPDATE MEMBER è stato aggiunto per evitare di ricreare il membro quando è necessario un aggiornamento, con la conseguente perdita di precedenza nella risoluzione dei calcoli. Aggiornamenti non può modificare l'ambito del membro calcolato, spostare il membro calcolato in un elemento padre diverso o definire un ordine di risoluzione diverso.

Il comando CREATE SET viene migliorato con la proprietà didascalia, la proprietà display_folder e la nuova proprietà STATIC | Parola chiave DYNAMIC. Static indica che il set viene valutato solo in fase di creazione. Dynamic indica che il set viene valutato ogni volta che il set viene usato in una query. Il valore predefinito è STATIC se viene omessa una parola chiave.

I comandi CREATE KPI e DROP KPI sono stati aggiunti alla sintassi MDX. Gli indicatori KPI possono essere creati dinamicamente da qualsiasi script MDX.

Estensioni dei set di righe degli schemi

Nella colonna ambito MDSCHEMA_MEMBERS viene aggiunta. I valori di ambito sono i seguenti: MDMEMBER_SCOPE_GLOBAL=1, MDMEMBER_SCOPE_SESSION=2.

Nella colonna MDSCHEMA_SETS set_evaluation_context viene aggiunta. I valori di contesto di valutazione dei set sono i seguenti: MDSET_RESOLUTION_STATIC = 1, MDSET_RESOLUTION_DYNAMIC = 2.

In MDSCHEMA_KPIS è stata aggiunta la colonna Scope. I valori di ambito sono i seguenti: MDKPI_SCOPE_GLOBAL=1, MDKPI_SCOPE_SESSION=2.