in

UGISS Community

Il sito della community dello User Group Italiano di SQL Server

Impostazione di una security SSAS 2005

Last post 03-14-2008 10.01 by fdechirico. 8 replies.
Page 1 of 1 (9 items)
Sort Posts: Previous Next
  • 03-04-2008 18.23

    • stecas
    • Top 25 Contributor
    • Joined on 10-05-2007
    • Posts 37
    • Points 650

    Impostazione di una security SSAS 2005

    Salve a tutti.Ho una dimensione all’interno del mio cubo così strutturata. 

     

        Misura 1
    Dimensione 1     100
      Livello 1   40
          Sotto Livello 1.1 40
          Sotto Livello  1.2 null
      Livello 2   60
          Sotto Livello 2.1 30
          Sotto Livello  2.2 30
     Ho una misura che si chiama Misura 1 Date queste informazioni devo applicare una security alla Dimensione 1 tale per cui in maniera dinamica, cioè senza impostare fisso l’esclusione del valore “Sotto Livello  1.2”, mi vengano esclusi i livelli che hanno la misura in questione che genera una cella vuota direttamente sulla dimensione. Avevo pensato di utilizzare nella mia query MDX il NON EMPTY in sede di query sia in riga sia in colonna per evitare appunto celle null; tuttavia il livello vuoto così facendo, in dimensione rimane disponibile cosa che io non voglio. Ho pensato che potrei mettere un NOT Isempty {[Dimensione 1].[Livello 1].members} direttamente sulla dimensione del cubo in oggetto, ma tuttavia mi restituisce errore quando provo a navigare il cubo. Avete suggerimenti su come poter impostare questa security? Aggiungo che in SSAS 2000 perché riuscivo ad applicare un filter crossjoin anche tra due dimensioni perché la security applicata non ragionava solo su un singolo livello bensì su tutta la dimensione. Grazie in anticipo per la risposta. Stefano

     

    • Post Points: 20
  • 03-05-2008 18.11 In reply to

    • fdechirico
    • Top 25 Contributor
      Male
    • Joined on 05-15-2007
    • Milano
    • Posts 63
    • Points 720

    Re: Impostazione di una security SSAS 2005

    Ciao Stefano,

    faccio prima una premessa: confesso di non aver compreso appieno cosa vuoi ottenere con precisione.

    Anche perchè nel titolo parli di security ma da quello che posso avere capito probabilmente il tuo problema è un altro.

    Potresti chiarirmi meglio la cosa e in particolare:

    - se l'eliminazione dell'elemento "Sotto Livello 1.2" vuoi ottenerla nel risultato della/e query MDX o direttamente nei metadati.

    - che soluzione avevi adottato in SSAS 2000 per risolvere il problema?

     

    Francesco

    Francesco De Chirico
    SQL Server MCP, MCTS, MCITP, MCT
    http://community.ugiss.org/blogs/fdechirico/
    BI Architect @ Solid Quality Learning Italy - http://www.solidq.com
    • Post Points: 20
  • 03-06-2008 9.16 In reply to

    • stecas
    • Top 25 Contributor
    • Joined on 10-05-2007
    • Posts 37
    • Points 650

    Re: Impostazione di una security SSAS 2005

    Si hai ragione effettivamente la spiegazione forse è stata un po’ farraginosa. Quello che voglio ottenere è che un utente che si collega ad una perspective originata da un cubo che ha una dimensione con n livelli, voglio che non veda a livello di metadati tutti quei livelli che con una/tutte le misure del mio cubo realizzano un incrocio nullo.La query MDX che io sono riuscito a fare, utilizzando il NON EMPTY, mi permette si di visualizzare il risultato corretto, salvo che all’utente successivamente in navigazione (visto che non sono report statici ma sono report che possono essere modificati e creati a proprio piacimento) non voglio che veda i livelli delle dimensioni che non hanno appunto misure collegate.

    La cosa da tenere in considerazione è che i livelli che io vado ad escludere, non sono fissi, cioè può venirsi a creare la situazione che con un aggiornamento quel/i determinati livelli possano trovarsi invece la misura piena ed in quel caso l'utente deve vederli. Questa precisazione nasce dal fatto che non posso a priori escludere questo livello, ne manutenerlo  mensilmente visto che ho una serie di clienti e tante dimensioni di analisi che mi costerebbe troppo verificare ogni mese, singolarmente quali dei livelli dovrebbero riempirsi piuttosto che no e quindi escluderli manualmente.

     Nella soluzione SSAS 2000 che ho ereditato, vengono impostate le security a determinate dimensioni in una maniera che non riesco a replicare nella versione 2005 perché mentre in 2000 si poteva applicare la security complessivamente sulla dimensione, in 2005 devo ragionare a livello di singolo livello della dimensione (o almeno io ho capito così). 

    Come mi chiedi ti faccio un esempio di come applicavo la security in 2000 dove addirittura facevo vedere i livelli risultanti da una crossjoin di 2 dimensioni e dove appunto i livelli della dimensione disponibili all'utente vengono filtrati sempre a livello di metadati.

     Ecco l’esempio Extract(Filter(Crossjoin([Dimensione1].[Dimensione1].&[Raggruppamento1].Children, [Dimensione2].Children), NOT IsEmpty([Dimensione1].[Dimensione1].&[Raggruppamento1])),[Dimensione2]) 

    Questa espressione la applico alla Dimensione1 nel campo Allowed Members, coinvolgendo un ulteriore Dimensione2 con i relativi sotto livelli, estrae e filtra solo quelli che non sono vuoti.

     Spero d’avere chiarito un po’ la situazione, diversamente rimango a disposizione per eventuali delucidazioni in merito. Stefano

     

    • Post Points: 20
  • 03-07-2008 18.39 In reply to

    • fdechirico
    • Top 25 Contributor
      Male
    • Joined on 05-15-2007
    • Milano
    • Posts 63
    • Points 720

    Re: Impostazione di una security SSAS 2005

    Ciao Stefano,

    da quello che scrivi avevo interpretato correttamente. Sinceramente non mi è mai capitato di "nascondere" nei metadati dei membri di dimensione in funzione delle misure. Al momento sono impossibilitato a fare qualche test (spero nel weekend!), comunque qualche considerazione la posso fare.

    1) In 2005 le Dimension Data security (database dimension o cube dimension) vengono configurate a livello di attributo. Quindi è possibile definire un set di Allowed o Denied members per un dato attributo. Per effetto dell'autoexists, però, vengono influenzati anche i membri degli altri attributi della dimensione, quindi, implicitamente, si definisce una sicurezza a livello di dimensione.

    2) Teoricamente quello che hai fatto in SSAS 2000 è quindi replicabile in SSAS 2005

    3) Nel codice MDX che utilizzavi in SSAS 2000, non vengono definite nè la misura nè la data. Quindi significa che quel codice utilizzerà i rispettivi default member. Per ciò che riguarda la misura ciò comporta che il codice funzionerà solo con una misura e che, nel caso tu abbia una sola misura, con l'intero cubo. Per ciò che riguarda la data se, come spesso accade, questa dimensione ha un membro "All" e quest'ultimo è il default member, significa che quel codice elimina tutti i membri che non hanno la default measure valorizzata nell'intero cubo (data = "All") Se queste ipotesi sono vere potresti considerare l'eventualità di "eliminare" direttamente nella fase ETL i membri non valorizzati (cosa che mi è capitata spesso di fare)

    4) Considera anche la possibilità di usare la funzione NonEmpty() (al posto di Filter(Set, NOT IsEmpty(Value))) che fornisce prestazioni migliori in quanto simula il comportamento dell'autoexists

    Spero di riuscire presto a trovare il tempo per fare qualche prova e darti una risposta definitiva per il tuo problema

     Francesco

     

    Francesco De Chirico
    SQL Server MCP, MCTS, MCITP, MCT
    http://community.ugiss.org/blogs/fdechirico/
    BI Architect @ Solid Quality Learning Italy - http://www.solidq.com
    • Post Points: 20
  • 03-08-2008 11.34 In reply to

    • stecas
    • Top 25 Contributor
    • Joined on 10-05-2007
    • Posts 37
    • Points 650

    Re: Impostazione di una security SSAS 2005

    Ciao Francesco.

    Ho l'impressione che ti abbia posto un quesito di non facile risoluzione e mi scuso se la sua esposizione da parte mia non risulta molto chiara.

    Per farti capire la mia esigenza ti prova a dare lo scenario.

    Ho n fact nel mio udm che raccolgono informazioni di n clienti.

    La struttura dei cubi che realizzo è uguale per tutti i clienti; quindi se il mio cubo prevede 25 dimensioni di analisi e 40 misure queste devono essere visibili per tutti i clienti.

    Quello che può cambiare da un cliente ad un altro è ciò che deve essere reso visibile durante la navigazione in termini di livelli delle dimensioni.

    L'MDX che ti ho inserito ho sempre creduto che ragionasse implicitamente sulle misure, cioè che il filter mostrasse i livelli delle dimensioni incrociate tra loro solo per quelle misure che per almeno un livello di entrambe non restituisse un cella nulla.

    Quindi quello che vorrei riuscire a fare è quello di rendere dinamici i livelli di una dimensione di analisi proprio a livello di metadati; se comunque in 2005 vi è una modalità diversa da 2000 a me sta bene lo stesso in quanto può anche essere che le modalità per fare questo siano variate.

    Credo che l'ottica di lettura per la risoluzione di questo problema possa anche essere un'altra ovvero: data una dimensione cliente che ha una gerarchia che si sviluppa in questa maniera ORAGANIZZAZIONE --> RAGGRUPPAMENTI DELLE FILIALI --> NOME PUNTUALE DELLA FILIALE incrociata con la dimensione ANNO --> SEMESTRE --> TRIMESTRE --> MESE e la misura VENDITE renda visibile solo i membri a livello di metadati quindi fisicamente selezionabili laddove non vi sia un incrocio null; ovviamente senza sapere a priori quali sono i valori delle dimensioni che creano incroci vuoti.

    Spero d'avere aggiunto ulteriori dettagli alla casistica in questione.

    Grazie Francesco.

     Stefano

    • Post Points: 20
  • 03-10-2008 0.05 In reply to

    • fdechirico
    • Top 25 Contributor
      Male
    • Joined on 05-15-2007
    • Milano
    • Posts 63
    • Points 720

    Re: Impostazione di una security SSAS 2005

    Ciao Stefano,

    intanto ti confermo quanto scritto nel mio precedente post, ossia che quanto da te fatto in SSAS 2000 è replicabile in SASS 2005. Mi sono limitato a testare su di una sola dimensione (Tempo) la possibilità di "filtrare" i soli mesi aventi dei dati associati nel cubo. In questo semplice scenario, utilizzando la funzione NONEMPTY(), la cosa funziona tranquillamente.

    Veniamo alla tua situazione.

    E' evidente che lo scenario che delinei è più articolato di quanto si poteva intuire all'inizio. Ovviamente è impossibile fornirti una soluzione senza conoscere tutti i dettagli ed è altrettanto improponibile riuscire a farlo in questa sede.

    In linea generale quello che stai cercando di ottenere attraverso la security (con una sorta di "dynamic security")  rischia di diventare molto presto improponibile in termini di prestazioni e scalabilità perchè di fatto costringe il motore di SSAS ad interrogare l'intero cubo per ottenere i metadati. E questa cosa con cubi grandi e con molti utenti è sicuramente da evitare.

    Come indicazione generale ti consiglierei, come prima cosa, di fermarti un momento ad analizzare il tuo scenario a 360 gradi verificando innanzitutto le "reali" esigenze dei tuoi clienti/utenti. Mi è capitato spesso di confondere la soluzione tecnica che avevo in mente con le reali esigenze dei mei utenti/clienti e ti posso assicurare che fermarsi a rianalizzare un'intero progetto (magari alla luce di nuovi dettagli di cui non avevamo conoscenza all'inizio) è un'attività che ripaga sempre.

    Come secondo passo (conseguenza del primo) prova a verificare se non esistano alternative praticabili relativamente al design dei cubi e delle dimensioni e/o alla fase ETL e che ti consentano di ottenere più agevolmente ciò che ti serve.

    Francesco

     

    Francesco De Chirico
    SQL Server MCP, MCTS, MCITP, MCT
    http://community.ugiss.org/blogs/fdechirico/
    BI Architect @ Solid Quality Learning Italy - http://www.solidq.com
    • Post Points: 20
  • 03-11-2008 11.42 In reply to

    • stecas
    • Top 25 Contributor
    • Joined on 10-05-2007
    • Posts 37
    • Points 650

    Re: Impostazione di una security SSAS 2005

    Ciao Francesco, innanzi tutto grazie per l'ulteriore risposta.

    Rispondo prima alle tue considerazioni sulla "valutazione della situazione": con il passaggio dalla versione 2000 alla versione 2005 vi è stato una rianalisi dei requisiti utente ed un'attenta rianalisi della metodologia sino a qui utilizzata.

    Risultato: non vi è nulla di modificabile nè in ambito ETL nè in ambito esigenze utente (non mi dilungo nelle motivazioni, ma "deve essere così")

    L'applicazioni delle security così come sono impostare ora su 2000 ci hanno sempre permesso d'avere prestazioni più che dignitose quindi a maggior ragione con i benchmark prestazionali offerti dalla versione 2005 non dovremmo avere problemi.

    Ritengo comunque che i concetti suggeriti siano un must da un punto di vista progettuale ed essendo un collaboratore di una persona che ha disegnato concettualmente la prima versione in 2000 non ho molta possibilità di sovvertire certe decisioni....anche perchè personalmente sono molto acerbo sotto questo punto di vista.

    Detto questo, ho una domanda forse stupida: quando parli dell'applicazione del NONEMPTY (premetto che con una query MDX ho già verificato il corretto funzionamento della stessa) in che punto dovrei andarla ad inserire? Cioè quando applico questa sintassi ad una dimensione in una query MDX essa viene applicata sull'intera dimensione, mentre quando devo inserirla in Visual Studio 2005 la dimensione ragiona per livelli della dimensione e non globalmente.

    Quindi al momento il mio problema consiste nell'applicazione della sintassi alla dimensione...

    p.s. io credo di dover lavorare sul tab "Dimension Data" del "Role" associato al mio utente, se questo però non è corretto....ok attendo consigli.

    Sempre grazie,

     Stefano

     

    • Post Points: 5
  • 03-14-2008 8.56 In reply to

    • stecas
    • Top 25 Contributor
    • Joined on 10-05-2007
    • Posts 37
    • Points 650

    Re: Impostazione di una security SSAS 2005

    Ragazzi ci sono riuscito.

    Ringrazio Francesco.

    Praticamente il mio errore consisteva nel NON applicare la security agli ATTRIBUTI della dimensione bensì dimensione.

    Detto questo quando facevo la query MDX applicata alla dimensione non avevo errori però nel momento in cui applicavo tale MDX ovviamente non poteva funzionare perchè li si ragiona sugli attributi.

     

    Credo d'avere commesso un errore forse un pò banale, ma volevo comunque ringraziarvi per i suggerimenti e per le risposte che avete dato.

     

    Stefano

    • Post Points: 20
  • 03-14-2008 10.01 In reply to

    • fdechirico
    • Top 25 Contributor
      Male
    • Joined on 05-15-2007
    • Milano
    • Posts 63
    • Points 720

    Re: Impostazione di una security SSAS 2005

    Ciao Stefano,

    sono contento che tu sia riuscito a risolvere il problema e mi scuso se non sono stato sufficientemente chiaro riguardo le sicurezze degli attributi (punto 1 del mio secondo post).

    Per quanto riguarda l'errore, non preoccuparti, se a posteriori un errore ci sembra "banale" significa che abbiamo capito e soprattutto abbiamo imparato qualcosa ergo non commetteremo più l'errore (perlomeno non "quello" Big Smile).

    Francesco

     

     

    Francesco De Chirico
    SQL Server MCP, MCTS, MCITP, MCT
    http://community.ugiss.org/blogs/fdechirico/
    BI Architect @ Solid Quality Learning Italy - http://www.solidq.com
    • Post Points: 5
Page 1 of 1 (9 items)
(C) 2007 User Group Italiano di SQL Server