Domanda

Per prefigurarlo, non conosco affatto OLAP, quindi se la terminologia è disattivata, sentiti libero di offrire correzioni.

Sto leggendo di OLAP e sembra che tutto riguardi lo spazio di trading per la velocità, in cui precalcoli (o calcoli su richiesta) e memorizzi aggregazioni sui tuoi dati, cancellate da determinate dimensioni. Capisco come funziona per dimensioni che hanno un insieme discreto di valori, come {Maschio, Femmina} o {Jan, Feb, ... Dec} o {@US_STATES}. Ma che dire delle dimensioni che hanno valori completamente arbitrari come (0, 1.25, 3.14156, 70000.23, ...)?

L'uso di OLAP preclude l'uso di aggregazioni nelle query che colpiscono le tabelle dei fatti, o è semplicemente usato per bypassare cose che possono essere precalcolate? Ad esempio, le aggregazioni arbitrarie su valori arbitrari devono ancora essere fatte al volo?

Qualsiasi altro aiuto per quanto riguarda ulteriori informazioni su OLAP sarebbe molto apprezzato. A prima vista, sia Google che SO sembrano essere un po 'asciutti (rispetto ad altri argomenti più popolari).

Modifica: è stata chiesta una dimensione in cui sono presenti valori arbitrari.

  • VELOCITÀ di esperimenti: 1.256 m / s, -2.234 m / s, 33.78 m / s
  • VALORE delle transazioni: $ 120,56, $ 22,47, $ 9,47
È stato utile?

Soluzione

I tuoi esempi di colonne di velocità e valore di solito non sono il tipo di colonne che dovresti interrogare in un modo OLAP: sono i valori che stai cercando di recuperare e presumibilmente si troverebbero nel set di risultati, come singole righe o aggregata.

Tuttavia, ho detto di solito . Nel nostro schema OLAP, abbiamo un buon esempio di colonna a cui stai pensando: event_time (un campo data-ora, con granularità al secondo). Nei nostri dati, sarà quasi unico: non si verificheranno due eventi nello stesso secondo, ma poiché abbiamo anni di dati nella nostra tabella, ciò significa che ci sono ancora centinaia di milioni di valori potenzialmente discreti e quando eseguiamo il nostro Query OLAP, vogliamo quasi sempre vincolare in base agli intervalli di tempo.

La soluzione è fare ciò che ha detto David Raznick: crei un "quotato" versione del valore. Quindi, nella nostra tabella, oltre alla colonna event_time, abbiamo una colonna event_time_bucketed - che è semplicemente la data dell'evento, con la parte dell'ora 00:00:00. Ciò riduce il conteggio di valori distinti da centinaia di milioni a poche migliaia. Quindi, in tutte le query che vincolano la data, limitiamo sia la colonna con bucket che quella reale (poiché la colonna con bucket non sarà abbastanza accurata da darci il valore reale), ad esempio:

   WHERE event_time BETWEEN '2009.02.03 18:32:41' AND '2009.03.01 18:32:41'
     AND event_time_bucketed BETWEEN '2009.02.03' AND '2009.03.01'

In questi casi, l'utente finale non vede mai la colonna event_time_bucketed: è lì solo per l'ottimizzazione della query.

Per i valori in virgola mobile come menzionato, la strategia di bucket può richiedere un po 'più di riflessione, poiché si desidera scegliere un metodo che comporterà una distribuzione relativamente uniforme dei valori e che mantenga contiguità. Ad esempio, se si dispone di una distribuzione di campane classica (con code che potrebbero essere molto lunghe) si vorrebbe definire l'intervallo in cui vive la maggior parte della popolazione (diciamo, 1 o 2 deviazioni standard dalla media), dividerlo in uniforme secchi e crea altri due secchi per "tutto più piccolo" e "tutto più grande".

Altri suggerimenti

Ho trovato utile questo link http://www.ssas-info.com/

Dai un'occhiata alla sezione webcast in cui ti guidano attraverso diversi aspetti, a partire da BI, Warehousing TO per progettare un cubo, dimensioni, calcoli, aggregazioni, KPI, prospettive ecc.

Nelle aggregazioni OLAP aiutano a ridurre i tempi di risposta della query avendo valori precalcolati che verrebbero utilizzati dalla query. Tuttavia, il rovescio della medaglia è l'aumento dello spazio di archiviazione in quanto sarebbe necessario più spazio per memorizzare le aggregazioni oltre ai dati di base.

SQL Server Analysis Services ha l'ottimizzazione guidata basata sull'utilizzo che aiuta nella progettazione dell'aggregazione analizzando le query che sono state inviate dai client (client di report come SQL Server Reporting Services, Excel o qualsiasi altro) e perfezionando di conseguenza la progettazione dell'aggregazione.

Spero che questo aiuti.

applausi

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top