Analysis Services Personalization Extensions

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

SQL ServerAnalysis ServicesLe estensioni per la personalizzazione sono alla 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, Analysis Services le estensioni per la personalizzazione forniscono le funzionalità che consentono di ottenere gli elementi seguenti:

  • Progettazione e distribuzione dinamiche Subito dopo aver progettato e distribuito le estensioni per la personalizzazione, gli utenti hanno accesso agli oggetti e alle funzionalità Analysis Services all'inizio della sessione utente successiva.

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

  • Contesto della sessione Analysis Services Le estensioni per la 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 le estensioni per la personalizzazione con altri sviluppatori di software senza dover passare a specifiche dettagliate su dove o come Analysis Services trovare questa funzionalità estesa.

Le estensioni della personalizzazione di Analysis Services possono essere utilizzate per diversi scopi. 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.

Analysis Services Le estensioni per la personalizzazione sono una modifica semplice ed elegante dell'architettura dell'assembly gestito esistente e vengono esposte in tutto il modello a oggetti Analysis Services Microsoft.AnalysisServices.AdomdServer, la sintassi MDX (Multidimensional Expressions) e i set di righe dello schema.

Architettura logica

L'architettura delle estensioni della personalizzazione di Analysis Services è basata sull'architettura dell'assembly gestita e sui quattro elementi di base seguenti:

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

Nota

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

Per tutte le classi con l'attributo personalizzato Microsoft.AnalysisServices.AdomdServer.PlugInAttribute, 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 per la 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 della personalizzazione, Analysis Services crea un ambiente di esecuzione durante la sessione client e compila dinamicamente la maggior parte degli oggetti dell'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, Analysis Services rimuove gli oggetti creati dinamicamente e chiude l'ambiente di esecuzione.

Eventi
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, crea una sessione e Analysis Services attiva l'evento Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened. Quando un client termina la sessione nel 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 modificando un cubo diverso, attiva un evento Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing.

Tracciabilità e gestione degli errori
Tutte le attività sono tracciabili utilizzando 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

Le estensioni della personalizzazione di Analysis Services 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 le classi Analysis Services di estensioni per la 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, un valore stringa di sola lettura che rappresenta l'ID sessione della connessione corrente.

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

  • Microsoft.AnalysisServices.AdomdServer.AdomdConnection.User, un 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, un riferimento di sola lettura al nuovo oggetto server.

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

Nuova classe server

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

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 è stato migliorato con la proprietà caption, la proprietà display_folder e la associated_measure_group proprietà .

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. Gli aggiornamenti non possono modificare l'ambito del membro calcolato, spostare il membro calcolato in un elemento padre diverso o definire un diverso ordine di risoluzione.

Il comando CREATE SET è stato migliorato con la proprietà caption, la proprietà display_folder e la nuova proprietà STATIC | Parola chiave DYNAMIC. Static significa che 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 una parola chiave viene omessa.

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

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

In MDSCHEMA_SETS set_evaluation_context aggiunta la colonna . 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.