Friday 6 October 2017

N Giorno Esponenziale Mobile Media


Mobile esponenziale Calculator medio attribuito un elenco ordinato di punti di dati, è possibile costruire la media mobile esponenziale ponderata di tutti i punti fino al punto corrente. In una media mobile esponenziale (EMA o EWMA in breve), i pesi diminuisce di un fattore costante 945 come i termini invecchiano. Questo tipo di media mobile cumulativa viene spesso utilizzato quando la creazione di grafici i prezzi delle azioni. La formula ricorsiva per EMA è dove x è oggi diretta punto prezzo corrente e 945 è una costante tra 0 e 1. Spesso, 945 è una funzione di un certo numero di giorni N. La funzione più comunemente usato è 945 2 (N1). Per esempio, il 9 giorni EMA di una sequenza ha 945 0.2, mentre un EMA 30 giorni ha 945 231 0,06,452 mila. Per valori di 945 vicino a 1, la sequenza di EMA può essere inizializzato a EMA8321 x8321. Tuttavia, se 945 è molto piccolo, i primi termini della sequenza possono ricevere un peso eccessivo con tale inizializzazione. Per risolvere questo problema in un EMA N-giorno, il primo termine della sequenza EMA è impostato per essere la media semplice del primo 8968 (N-1) 28969 termini, in tal modo, l'EMA inizia il numero del giorno 8968 (N-1 ) 28969. Per esempio, in una media mobile esponenziale a 9 giorni, EMA8324 (x8321x8322x8323x8324) 4. Poi EMA8325 0.2x8325 0.8EMA8324 e EMA8326 0.2x8326 0.8EMA8325 ecc Utilizzando il mobile esponenziale analisti media del titolo spesso un'occhiata alla EMA e SMA (media mobile semplice) dei prezzi delle azioni notare tendenze l'ascesa e la caduta o prezzi, e per aiutare loro prevedere il comportamento futuro. Come tutte le medie mobili, gli alti e bassi del grafico EMA saranno in ritardo rispetto gli alti e bassi dei dati non filtrati originali. Più alto è il valore di N, la più piccola 945 sarà più agevole e il grafico sarà. Oltre esponenzialmente ponderate medie mobili cumulativi, si può anche calcolare in modo lineare ponderate medie mobili cumulativi, in cui i pesi diminuiscono linearmente come i termini invecchiano. Vedi media mobile articolo cumulativo lineare, quadratica e cubica e calculator. Average True Range foglio di calcolo di 038 Tutorial Scopri come commercianti utilizzare Average True Range come indicatore di stop-loss in acquisto di strategie di vendita amplificatore, e imparare come si calcola in Excel. Un intervallo stock8217s è la differenza tra il prezzo massimo e minimo in un solo giorno, ed è spesso utilizzato come indicatore di volatilità. Tuttavia, il commercio è spesso interrotta Se i prezzi aumenta o diminuisce di una grande quantità in un solo giorno. Questo è a volte osservata in commercio di materie prime, e può portare ad un divario tra i prezzi di apertura e chiusura tra due giorni consecutivi. Una gamma quotidiano non sarebbe necessariamente acquisire queste informazioni. J. Welles Wilder introdotto vera gamma e la vera gamma media nel 1978 per meglio descrivere questo comportamento. Il vero campo di cattura la differenza tra i prezzi di chiusura e di apertura tra due giorni consecutivi. La vera gamma è il più grande della differenza tra yesterday8217s stretti e today8217s bassa la differenza tra yesterday8217s vicino e today8217s alta la differenza tra today8217s alta e bassa today8217s Il valore iniziale della vera gamma è semplicemente il massimo giornaliero meno il minimo giornaliero. L'Average True Range (ATR) è una media esponenziale n giorni. e può essere approssimata da questa equazione. dove n è la finestra della media mobile (in genere 14 giorni) e TR è il vero gamma. ATR è solitamente inizializzato (a t 0) con n-giorno trascinamento media di TR. true gamma media non indica la direzione del mercato, ma semplicemente la volatilità. L'equazione dà la più recente movimento dei prezzi maggiore importanza quindi, viene utilizzato per misurare il sentiment di mercato. Di solito è utilizzato per analizzare il rischio di prendere una posizione specifica sul mercato. Un modo per farlo è quello di prevedere i movimenti quotidiani sulla base di valori storici di ATR, e entrare o uscire dal mercato di conseguenza. Ad esempio, uno stop-loss giornaliero può essere impostato a 1,5 o 2 volte la gamma media vera. Questo dà una libertà dei prezzi delle attività di variare naturalmente durante un giorno di negoziazione, ma pone ancora una posizione di uscita ragionevole. Inoltre, se la media storica contratti True Range, mentre i prezzi sono trend verso l'alto, allora questo potrebbe indicare che il sentimento del mercato può girare. In combinazione con le bande di Bollinger. Average True Range è uno strumento efficace per le strategie di trading di volatilità-based. Calcola Average True Range in Excel Questo foglio di calcolo Excel utilizza i prezzi delle azioni quotidiane per BP per i cinque anni a partire dal 2007 (scaricati con questo foglio di calcolo). Il foglio di calcolo è completamente annotato con equazioni e commenti per aiutare la vostra comprensione. Il seguente foglio di calcolo, tuttavia, ha molto più intelligenza. E automaticamente, traccia la gamma vera media, l'indice di forza relativa e la volatilità storica di dati che scarica automaticamente da Yahoo Finance. Si entra le seguenti informazioni una quotazione di borsa a inizio e fine periodo la data di calcolo per l'ATR, RSI e volatilità storica Dopo aver fatto clic su un pulsante, il foglio di calcolo scaricare quotazioni da Yahoo Finance (in particolare, i quotidiani prezzi aprire, chiudere, alti e bassi tra le due date). E poi traccia la vera gamma media e la volatilità storica. It8217s molto semplice da usare I8217d piace sentire cosa ne pensate o se si dispone di eventuali miglioramenti you8217d piace. 11 pensieri su ldquo Average True Range foglio di calcolo di 038 Tutorial rdquo Come il Fogli gratuiti Maestro Knowledge Base recenti Posts22 SQL per l'analisi e reporting Oracle ha potenziato sqls capacità di elaborazione di analisi con l'introduzione di una nuova famiglia di funzioni SQL analitiche. Queste funzioni analitiche consentono di calcolare: Classifica e percentili Moving calcoli finestra lineari statistiche di regressione funzioni Classifica includono distribuzioni cumulative, cento rango, e N-piastrelle. Moving calcoli finestra consentono di trovare in movimento e aggregazioni cumulativi, come le somme e le medie. Analisi Laglead consente diretti riferimenti inter-fila in modo da poter calcolare le variazioni periodo a periodo. analisi FirstLast consente di trovare il primo o l'ultimo valore in un gruppo ordinato. Altri miglioramenti a SQL comprendono l'espressione CASE ed esterno partizionato join. espressioni CASE forniscono if-then logica utile in molte situazioni. Partizionato outer join è un'estensione ANSI outer join sintassi che permette agli utenti per densificare selettivamente certe dimensioni, mantenendo gli altri sparse. In questo modo gli strumenti di reporting per densificare selettivamente dimensioni, ad esempio, quelli che appaiono nelle loro relazioni cross-tabulari, mantenendo gli altri sparse. Per migliorare le prestazioni, funzioni analitiche possono essere parallelizzati: più processi possono simultaneamente eseguire tutte queste affermazioni. Queste funzionalità rendono calcoli più facile e più efficiente, migliorando così le prestazioni del database, scalabilità e semplicità. funzioni analitiche sono classificati come descritto nella tabella 22-1. Tabella 22-1 funzioni analitiche e loro utilizzo per eseguire queste operazioni, le funzioni analitiche aggiungono diversi nuovi elementi al processo SQL. Questi elementi si basano su SQL esistente per consentire espressioni di calcolo flessibili e potenti. Con poche eccezioni, le funzioni analitiche hanno questi nuovi elementi. Il flusso di elaborazione è rappresentata nella Figura 22-1. Figura 22-1 Ordine di elaborazione I concetti essenziali usati in funzioni analitiche sono: l'elaborazione delle query utilizzando funzioni analitiche si svolge in tre fasi. In primo luogo, tutti i join, DOVE. GROUP BY e HAVING vengono eseguite. In secondo luogo, il set di risultati è messo a disposizione le funzioni analitiche, e tutti i loro calcoli. In terzo luogo, se la query ha una clausola ORDER BY alla sua estremità, ORDER BY viene elaborato per consentire preciso ordine di uscita. L'ordine di elaborazione è mostrato nella Figura 22-1. partizioni set di risultati Le funzioni analitiche consentono agli utenti di dividere i set di risultati di query in gruppi di righe chiamate partizioni. Si noti che le partizioni termine utilizzati con funzioni analitiche è estraneo alla funzione di partizioni della tabella. Nel corso di questo capitolo, le partizioni termine si riferisce solo il significato relative a funzioni analitiche. Le partizioni sono create dopo che i gruppi definiti con clausole GROUP BY, in modo che siano disponibili per tutti i risultati aggregati, quali somme e le medie. divisioni partizioni possono essere basate su tutte le colonne o espressioni desiderati. Una serie di risultati della query può essere partizionato in una sola partizione che contiene tutte le righe, poche grandi partizioni, o molte piccole partizioni in possesso di poche righe ciascuna. Per ogni riga in una partizione, è possibile definire una finestra scorrevole di dati. Questa finestra determina l'intervallo di righe utilizzate per eseguire i calcoli per la riga corrente. dimensioni finestre possono essere basate su un numero di righe fisica o un intervallo logico come il tempo. La finestra ha una fila di partenza e una riga finale. A seconda della sua definizione, la finestra può muovere in una o entrambe le estremità. Per esempio, una finestra definita per una funzione somma cumulativa avrebbe la fila iniziante fissata alla prima fila di sua partizione, e la sua fila fine farebbe scorrere dal punto di partenza fino all'ultima riga della partizione. Al contrario, una finestra definita per una media mobile dovrebbe avere sia il suo inizio e di fine slitta in modo da mantenere una gamma fisica o logica costante. Una finestra può essere impostata grande come tutte le righe di una partizione o solo una finestra scorrevole di una riga all'interno di una partizione. Quando una finestra è in prossimità di un confine, la funzione restituisce risultati solo per le righe a disposizione, piuttosto che avverte che i risultati non sono ciò che si desidera. Quando si utilizzano funzioni finestra, la riga corrente è incluso durante i calcoli, così si dovrebbe specificare solo (n -1), quando si tratta di n elementi. Ogni calcolo eseguito con una funzione analitica si basa su una riga corrente all'interno di una partizione. La riga corrente serve come punto di riferimento determina l'inizio e la fine della finestra. Per esempio, un calcolo di media mobile centrata potrebbe essere definita con una finestra che contiene la riga corrente, le sei righe precedenti e seguenti sei righe. Ciò creerebbe una finestra scorrevole di 13 righe, come mostrato nella Figura 22-2. Figura 22-2 Finestra scorrevole Esempio Ranking, Windowing, e Reporting funzioni Questa sezione illustra le funzioni analitiche di base per la classifica, a finestre, e il reporting. Esempio di calcolo di regressione lineare In questo esempio, calcoliamo una linea di regressione ordinaria-minimi quadrati che esprime la quantità venduta di un prodotto come una funzione lineare dei prodotti prezzo di listino. I calcoli sono raggruppati per canale di vendita. La PENDENZA valori. INTCPT. RSQR sono pendenza, intercetta e coefficiente di determinazione della retta di regressione, rispettivamente. L'(intero) il valore COUNT è il numero di prodotti in ciascun canale per il quale sono disponibili entrambi i dati relativi ai prezzi di quantità vendute e della lista. Statistica Aggregati Oracle fornisce una serie di funzioni statistiche SQL e un pacchetto di statistiche, DBMSSTATFUNCS. Questa sezione elenca alcune delle nuove funzioni con sintassi di base. Statistiche descrittive È possibile calcolare le seguenti statistiche descrittive: mediana di un modo impostazione dei dati di un set di dati È possibile calcolare le seguenti statistiche parametriche: spearmans Rho Coefficiente Kendalls tau-b Coefficiente In aggiunta alle funzioni, questa versione ha un pacchetto PLSQL, DBMSSTATFUNCS . Esso contiene la funzione di rilevazione statistica descrittiva con le funzioni per supportare il montaggio di distribuzione. La funzione Sommario sintetizza una colonna numerica di una tabella con una varietà di statistiche descrittive. Le funzioni di montaggio cinque distribuzione supportano normale, uniforme, Weibull, di Poisson e distribuzione esponenziale. User-Defined Aggregati Oracle offre una struttura per la creazione di funzioni, chiamate funzioni di aggregazione definite dall'utente. Queste funzioni sono scritte in linguaggi di programmazione come PLSQL, Java e C, e possono essere usati come funzioni analitiche o aggregati in viste materializzate. Vedere Oracle Database dati Cartuccia Developers Guide per ulteriori informazioni riguardanti la sintassi e le restrizioni. I vantaggi di queste funzioni sono: funzioni altamente complesse possono essere programmate utilizzando un linguaggio completamente procedurale. scalabilità superiore rispetto ad altre tecniche quando le funzioni definite dall'utente sono programmati per l'elaborazione parallela. i tipi di dati oggetto possono essere trattati. Come semplice esempio di una funzione di aggregazione definita dall'utente, considerare la statistica skew. Questo misure di calcolo se un insieme di dati ha una distribuzione asimmetrica sulla sua media. Essa vi dirà se una coda della distribuzione è significativamente più grande rispetto agli altri. Se è stato creato un aggregato chiamato udskew definita dall'utente ed è applicato ai dati limite di credito nell'esempio precedente, l'istruzione SQL ei risultati potrebbero apparire così: Prima di costruire funzioni di aggregazione definite dall'utente, si dovrebbe considerare se le vostre esigenze possono essere soddisfatte in SQL regolare. Molti calcoli complessi sono possibili direttamente in SQL, in particolare utilizzando l'espressione CASE. Stare con regolare SQL permetterà lo sviluppo più semplice, e molte operazioni di query sono già ben parallelizzato in SQL. Anche l'esempio precedente, la statistica skew, può essere creato utilizzando le normali, anche se lungo, SQL. Operazioni ruotando la d ata restituiti dalle query di business intelligence è spesso più utile se presentati in un formato crosstabular. Il pivotclause dell'istruzione SELECT permette di scrivere query di contingenza che ruotano righe in colonne, aggregando i dati in fase di rotazione. Orientabile è una tecnica fondamentale nel data warehouse. In esso, a trasformare il più righe di input in un minor numero di e generalmente più ampie righe nel data warehouse. Quando girevole, un operatore di aggregazione è applicata per ogni elemento dell'elenco valore della colonna pivot. La colonna perno non può contenere un'espressione arbitraria. Se avete bisogno di ruotare su un'espressione, allora si dovrebbe alias l'espressione in una vista prima dell'operazione PIVOT. La sintassi di base è la seguente: Per illustrare l'uso di imperniamento, creare la seguente vista come base per esempi successivi: Esempio: pivotante L'istruzione seguente illustra un perno tipica colonna channel: Si noti che l'uscita ha creato quattro nuove colonne aliasing , VENDITE DIRETTE. InternetSales. CATALOGSALES. e TELESALES. uno per ciascuno dei valori di articolazione. L'uscita è una somma. Se non viene fornito alcun alias, della colonna saranno i valori del - list IN. Facendo perno su più colonne È possibile ruotare su più di una colonna. La seguente dichiarazione illustra una tipica multipla perno colonna: Si noti che questo esempio specifica un multi-colonna nel - list con intestazioni delle colonne progettate per soddisfare i membri - list IN. Girevole: Aggregati multiple È possibile ruotare con più aggregati, come mostrato nell'esempio seguente: Si noti che la query crea intestazioni delle colonne concatenando i valori del perno (o pseudonimo) con l'alias della funzione di aggregazione, oltre a un carattere di sottolineatura. Distinguere Null-pivot generata da Null in origine dati È possibile distinguere tra valori nulli che vengono generati dall'uso di PIVOT e quelle che esistono nei dati di origine. L'esempio seguente illustra i valori nulli che PIVOT genera. La seguente query restituisce le righe con 5 colonne, colonna ProdID. e perno conseguente colonne Q1. Q1COUNTTOTAL. Q2. Q2COUNTTOTAL. Per ogni valore univoco di ProdID. Q1COUNTTOTAL restituisce il numero totale di righe il cui valore è trim Q1. cioè, e Q2COUNTTOTAL restituisce il numero totale di righe il cui valore è qtr Q2. Supponiamo di avere un tavolo sales2 della seguente struttura: Dal risultato, sappiamo che per ProdID 100, ci sono 2 file di vendita per trimestre Q1. e 1 riga di vendita per trimestre Q2 per ProdID 200, vi è 1 fila di vendita per trimestre Q1. e nessuna riga di vendita per trimestre Q2.Così, in Q2COUNTTOTAL. è possibile identificare che NULLlt1gt proviene da una riga nella tabella originale la cui misura è di valore nullo, mentre NULLlt2gt è dovuta a nessuna riga di essere presente nella tabella originale per prodid 200 nel quartiere Q2. Operazioni Unpivoting Un UNPIVOT non inverte un'operazione PIVOT. Invece, ruota dati di colonne in righe. Se si lavora con i dati basculanti, un'operazione UNPIVOT non può annullare le aggregazioni che sono state fatte da PIVOT o qualsiasi altro mezzo. Per illustrare unpivoting, prima creare una tabella basculante che include quattro colonne, per quarti dell'anno: I contenuti tavoli simile al seguente: La seguente operazione UNPIVOT ruota le colonne trimestre in righe. Per ogni prodotto, ci saranno quattro righe, una per ogni quarto. Si noti l'uso di CONTENERE NULLS in questo esempio. È inoltre possibile utilizzare ESCLUDERE NULLS. che è l'impostazione predefinita. Inoltre, è anche possibile UNPIVOT utilizzando due colonne, come nell'esempio seguente: jolly e sottoquery orientabile con Operations XML Se si desidera utilizzare un argomento jolly o subquery nelle colonne girevoli, è possibile farlo con la sintassi XML PIVOT. Con XML PIVOT, l'output dell'operazione è correttamente formattato XML. L'esempio seguente illustra utilizzando la parola chiave jolly, QUALSIASI. Produce XML che include tutti i valori dei canali in salesview: Si noti che la parola chiave è ANY disponibile nelle operazioni PIVOT solo come parte di un'operazione XML. Questo output include i dati per i casi in cui è presente il canale nel set di dati. Si noti inoltre che le funzioni di aggregazione devono specificare una clausola GROUP BY per restituire più valori, ma il pivotclause non contiene un gruppo esplicito BY. Invece, il pivotclause esegue un gruppo implicita. Il seguente esempio illustra utilizzando una subquery. Produce XML che include tutti i valori di canali e dati di vendita corrispondenti ad ogni canale: L'uscita addensa i dati da includere tutti i possibili canali per ciascun prodotto. I dati densificazione per la segnalazione dei dati viene normalmente conservato in forma sparsa. Cioè, se nessun valore esiste per una data combinazione di valori delle dimensioni, senza riga esiste nella tabella dei fatti. Tuttavia, si consiglia di visualizzare i dati in forma densa, con le righe per tutte le combinazioni di valori delle quote visualizzate anche quando non esistono dati di fatto per loro. Ad esempio, se un prodotto non ha venduto nel corso di un determinato periodo di tempo, si può ancora voglia di vedere il prodotto per quel periodo di tempo con un valore pari a zero di vendita accanto ad essa. Inoltre, i calcoli temporali possono essere eseguite più facilmente quando dati è denso lungo la dimensione temporale. Questo perché i dati densi riempiranno un consistente numero di righe per ciascun periodo, che a sua volta rende più semplice per utilizzare le funzioni di windowing analitiche con offset fisici. densificazione dei dati è il processo di conversione dei dati sparsi in fitto form. To superare il problema della scarsità, è possibile utilizzare un esterno partizionato unirsi per colmare le lacune in una serie temporale o di ogni altra dimensione. Tale unirsi estende l'esterno convenzionale sintassi di join applicando l'outer join a ogni partizione logica definita in una query. Oracle partizioni logicamente le righe nella query in base all'espressione specificata nella partizione BY. Il risultato di un esterno partizionato join è una unione dei join esterni di ciascuna delle partizioni nella tabella logicamente partizionata con la tabella sul lato opposto del join. Si noti che è possibile utilizzare questo tipo di join per colmare le lacune in qualsiasi dimensione, non solo la dimensione temporale. La maggior parte degli esempi qui concentrarsi sulla dimensione tempo perché è la dimensione più frequentemente utilizzata come base per il confronto. Partizione registrazione Sintassi La sintassi per esterno partizionato unirsi estende l'ANSI SQL JOIN clausola con la frase PARTITION BY seguita da una lista di espressioni. Le espressioni nella lista specificano il gruppo a cui unirsi viene applicata l'esterno. Le seguenti sono le due forme di sintassi normalmente utilizzati per esterno partizionato registrazione: Si noti che full outer join non è supportata con un esterno partizionato join. Esempio di Dati Sparsi Una situazione cal Typi con una dimensione rada è mostrato nel seguente esempio, che calcola le vendite settimanali e le vendite anno-to-date per il rimbalzo del prodotto per settimane 20-30 nel 2000 e 2001: In questo esempio, abbiamo ci si aspetta 22 righe di dati (11 settimane ciascuno da 2 anni) se i dati sono stati densi. Tuttavia, si ottiene solo 18 righe, perché le settimane 25 e 26 sono mancanti nel 2000, e le settimane 26 e 28 nel 2001. Lacune Inserimento dei dati possiamo prendere i dati sparsi della query precedente e fare un esterno partizionato unirsi a un insieme denso di dati in tempo. Nella query seguente, abbiamo alias la nostra query originale come v e selezioniamo i dati della tabella tempi, che abbiamo alias t. Qui si recupera 22 righe perché non ci sono lacune nella serie. Le quattro righe aggiunte hanno ciascuno 0 come il loro valore di vendita impostato a 0 utilizzando la funzione NVL. Si noti che in questa ricerca, una condizione WHERE stato posto per settimane tra 20 e 30 nella vista in linea per la dimensione temporale. Questo è stato introdotto per mantenere il set di risultati di piccole dimensioni. Colmare le lacune nei dati Due Dimensioni N-dimensionale è in genere visualizzati come una fitta scheda trasversale 2-dimensionale (n - 2) dimensioni della pagina. Ciò richiede che tutti i valori di quota per le due dimensioni che compaiono nella scheda croce essere compilati Il seguente è un altro esempio in cui l'esterno partizionato uniscono funzionalità può essere utilizzata per colmare le lacune su due dimensioni:. In questa query, la clausola di factoring subquery v1 riassume i dati di vendita al prodotto, al paese, e il livello di anno. Questo risultato è scarsa, ma gli utenti potrebbero voler vedere tutte le combinazioni di campagna, anno per ogni prodotto. Per raggiungere questo obiettivo, prendiamo ogni partizione di v1 in base ai valori di prodotto e outer join sulla dimensione Paese prima. Questo ci darà tutti i valori di paese per ogni prodotto. Abbiamo poi prendiamo questo risultato e la partizione su valori prodotto e per paese e quindi outer join sulla dimensione temporale. Questo ci darà tutti i valori di tempo per ogni combinazione prodotto e per paese. Colmare le lacune in una tabella di inventario Una tabella inventario tracce tipicamente quantità di unità disponibili per i vari prodotti. Questa tabella è rada: memorizza solo una riga per un prodotto quando c'è un evento. Per una tabella vendite, l'evento è una vendita, e per la tabella di magazzino, l'evento è un cambiamento nella quantità disponibile per un prodotto. Ad esempio, si consideri la seguente tabella inventario: La tabella inventario ora ha le seguenti righe: Ai fini dei rapporti, gli utenti potrebbero voler visualizzare questi dati di inventario in modo diverso. Ad esempio, si può decidere di visualizzare tutti i valori di tempo per ogni prodotto. Ciò può essere realizzato utilizzando esterno partizionato join. Inoltre, per le nuove righe inserite su periodi di tempo mancante, gli utenti potrebbero voler vedere i valori per la quantità di colonna d'unità da riportare dal più recente periodo di tempo esistente. Quest'ultimo può essere realizzato utilizzando valore LASTVALUE funzione di finestra analitica. Ecco la query e l'output desiderato: La query interna calcola un esterno partizionato join in tempo all'interno di ciascun prodotto. La query interna addensa i dati sulla dimensione temporale (cioè la dimensione temporale avrà ora una riga per ogni giorno della settimana). Tuttavia, la quantità colonna di misura avrà valori nulli per le righe appena aggiunti (vedi l'uscita nella quantità colonna i seguenti risultati. La query esterna utilizza la funzione LASTVALUE analitica. L'applicazione di questa funzione le partizioni di dati per prodotto e ordina i dati sul colonna dimensione temporale (timeid). per ogni riga, la funzione trova l'ultimo valore non nullo nella finestra causa l'opzione IGNORE NULLS. che può essere utilizzato sia con LASTVALUE e FirstValue. vediamo l'output desiderato nella repeatedquantity colonna il seguente output:. calcolare i valori di dati per colmare le lacune esempi nella sezione precedente illustrano come utilizzare esterno partizionato si uniscono per colmare le lacune in una o più dimensioni Tuttavia, i set di risultati prodotti da esterno partizionato uniscono hanno valori nulli per le colonne che non sono inclusi in la partizione lista. in genere, queste sono le colonne di misura. gli utenti possono usufruire di funzioni SQL analitiche per sostituire quei valori nulli con un valore non nullo. ad esempio, la seguente query calcola totali mensili per la scheda di memoria prodotti da 64 MB e DVD-R dischi (prodotto ID 122 e 136) per l'anno 2000. Esso utilizza esterno partizionato si uniscono per densificare i dati per tutti i mesi. Per i mesi mancanti, quindi utilizza la funzione SQL analitica AVG per calcolare le vendite e le unità per la media dei mesi in cui il prodotto è stato venduto. Se si lavora in SQLPlus, i seguenti due comandi avvolge le intestazioni di colonna per una maggiore leggibilità dei risultati: I calcoli di serie storica su addensato dati Densificatio n non è solo per la segnalazione scopo. Consente inoltre alcuni tipi di calcoli, in particolare, i calcoli delle serie storiche. calcoli serie storiche sono più facili quando i dati è denso lungo la dimensione temporale. dati denso ha un consistente numero di righe per ogni periodo di tempo che a sua volta lo rendono semplice da usare funzioni finestra analitica con offset fisici. Per illustrare, dobbiamo prima dare l'esempio a colmare le lacune nei dati. e aggiungiamo una funzione analitica a quella query. Nella seguente versione migliorata, calcoliamo vendite settimanali year-to-date accanto alle vendite settimanali. I valori NULL che l'esterno partizionato join inserti nel fare la serie storica densa vengono gestiti nel solito modo: la funzione SOMMA li tratta come 0s. Periodo-to-periodo di confronto per un livello Tempo: Esempio Come possiamo utilizzare questa funzione per confrontare In particolare i valori attraverso periodi di tempo, come si fa a calcolare il confronto delle vendite anno su anno a livello settimana i seguenti rendimenti di query sulla stessa riga , per ciascun prodotto, le vendite anno-to-date per ogni settimana del 2001 con quello del 2000. si noti che in questo esempio si comincia con una clausola WITH. Questo migliora la leggibilità della query e ci permette di concentrarci sul esterno partizionato join. Se si lavora in SQLPlus, il seguente comando avvolge le intestazioni delle colonne per una maggiore leggibilità dei risultati: nella clausola FROM delle densesales vista in linea. usiamo un esterno partizionato join di aggregati vista V e il tempo t vista per colmare le lacune nei dati di vendita lungo la dimensione temporale. L'uscita del esterno partizionato join viene quindi elaborato dalla funzione SUM analitica. OLTRE per calcolare le vendite settimanali year-to-date (la colonna weeklyytdsales). Così, i densesales vista calcola i dati anno-to-date di vendita per ogni settimana, compresi quelli mancanti nella vista aggregata s. I yearoveryearsales vista in linea calcola poi l'anno fa le vendite settimanali year-to-date con la funzione GAL. La funzione GAL etichettato weeklyytdsalesprioryear specifica una partizione dalla clausola che le coppie righe per la stessa settimana di anni 2000 e 2001 in una singola partizione. Abbiamo poi passiamo un offset di 1 alla funzione GAL per ottenere l'anno settimanale per le vendite di data per la prima e all'anno più esterno blocco query seleziona i dati da yearoveryearsales con la condizione yr 2001 e quindi i rendimenti di query, per ogni prodotto, il suo settimanale le vendite anno-to-date nelle settimane specificate anni 2001 e 2000. periodo-to-periodo di confronto per più livelli temporali: esempio Mentre l'esempio prima ci mostra un modo per creare il confronto per un singolo livello di tempo, sarebbe ancora più utile per gestire più livelli temporali in una singola query. Ad esempio, potremmo confrontare le vendite rispetto al periodo precedente ai livelli dell'anno, trimestre, mese e giorno. Come possiamo creare una query che esegue un confronto anno su anno delle vendite anno-to-date per tutti i livelli della nostra gerarchia volta prenderemo diversi passaggi per eseguire questa operazione. L'obiettivo è una singola query con i confronti al giorno, settimana, mese, trimestre, e il livello dell'anno. I passi sono i seguenti: Creeremo una vista chiamato cubeprodtime. che detiene un cubo gerarchica delle vendite aggregate attraverso i tempi ed i prodotti. Poi creeremo una vista della dimensione temporale da utilizzare come un bordo del cubo. Il bordo di tempo, che contiene un set completo di date, esterno sarà partizionato unito ai dati sparse nel cubeprodtime vista. Infine, per le massime prestazioni, creeremo una vista materializzata, mvprodtime. costruita utilizzando la stessa definizione cubeprodtime. Per ulteriori informazioni riguardanti i cubi gerarchici, vedere il capitolo 21, SQL per l'aggregazione nei data warehouse. La vista materializzata è definito nel passaggio 1 nella sezione seguente. Fase 1 Creare il cubo gerarchica vista La vista materializzata mostrato nella seguente potrebbe essere già presente nel vostro sistema, se non, creare ora. Se è necessario generare esso, si noti che ci limitiamo la query di solo due prodotti per tenere il tempo di elaborazione breve: Perché questo punto di vista è limitato a due prodotti, restituisce poco più di 2200 righe. Si noti che la colonna HierarchicalTime contiene rappresentazioni di stringa di tempo da tutti i livelli della gerarchia tempo. L'espressione CASE utilizzato per la colonna HierarchicalTime aggiunge un marcatore (0, 1) per ciascuna stringa data per indicare il livello temporale del valore. A 0 rappresenta il livello dell'anno, 1 è quarti, 2 è mesi, e 3 è il giorno. Si noti che la clausola GROUP BY è un rollup concatenato che specifica la gerarchia cumulativo per le dimensioni temporali e di prodotto. La clausola GROUP BY è ciò che determina il contenuto gerarchici cubo. Fase 2 Creare il edgetime vista, che è un set completo di valori di data edgetime è la fonte per colmare le lacune di tempo nel cubo gerarchico utilizzando un esterno partizionato join. Il HierarchicalTime colonna edgetime sarà utilizzato in una partizionato unirsi con la colonna HierarchicalTime nel cubeprodtime vista. La seguente dichiarazione definisce edgetime: Fase 3 creare la vista mvprodtime materializzato per supportare prestazioni più veloci La vista materializzata definizione è un duplicato della cubeprodtime vista definita in precedenza. Poiché si tratta di una query duplicato, i riferimenti a cubeprodtime saranno riscritti per utilizzare il mvprodtime vista materializzata. Di seguito materializzata può essere già presente nel vostro sistema, se non, creare ora. Se è necessario generare esso, si noti che ci limitiamo la query di solo due prodotti per tenere il tempo di elaborazione breve. Fase 4 Creare la query confronto Abbiamo ora impostare la fase per la nostra interrogazione confronto. Siamo in grado di ottenere i calcoli di confronto periodo a periodo a tutti i livelli di tempo. Richiede applicando funzioni analitiche a un cubo gerarchico con dati densi lungo la dimensione temporale. Alcuni dei calcoli che possiamo raggiungere per ogni livello di tempo sono: somma delle vendite per periodo precedente a tutti i livelli di tempo. Varianza delle vendite oltre periodo precedente. Somma delle vendite nello stesso periodo di un anno fa a tutti i livelli di tempo. Varianza delle vendite rispetto allo stesso periodo dello scorso anno. L'esempio seguente esegue tutti e quattro di questi calcoli. Esso utilizza un esterno partizionato unire dei punti di vista e cubeprodtime edgetime per creare una vista in linea dei dati dense chiamati densecubeprodtime. La query utilizza la funzione GAL nello stesso modo come l'esempio a livello singolo prima. L'esterno clausola WHERE specifica volta a tre livelli: i giorni di agosto del 2001, tutto il mese, e tutto il terzo trimestre del 2001. Si noti che le ultime due righe dei risultati contengono il livello mese e il livello di quartiere aggregations. Note che per rendere i risultati più facili da leggere se si utilizza SQLPlus, le intestazioni delle colonne devono essere regolati con i seguenti comandi. I comandi si piegheranno le intestazioni delle colonne per ridurre la lunghezza della linea: Ecco la query confrontando vendite attuali per prima e le vendite anno fa: La prima funzione GAL (salespriorperiod) suddivide i dati su GIDP. gatto. Subcat. prod. gidt e ordina le righe su tutte le colonne dimensione temporale. Si ottiene il valore delle vendite del periodo precedente passando un offset di 1. La seconda funzione GAL (salessameperiodprioryear) Pareti i dati sulle colonne aggiuntive qtrnum. monnum. e daynum e ordini su yr modo che, con un offset di 1, si può calcolare l'anno fa vendite per lo stesso periodo. La clausola SELECT più esterna calcola le varianze. Creazione di un membro personalizzato in una dimensione: Esempio In molti compiti SQL di analisi, è utile definire membri personalizzati in una dimensione. Per esempio, si potrebbe definire un periodo di tempo specializzato per le analisi. È possibile utilizzare un esterno partizionato si uniscono per aggiungere temporaneamente un membro di una dimensione. Si noti che la nuova clausola SQL modello è adatto per la creazione di scenari più complessi che coinvolgono i nuovi membri nelle dimensioni. Vedere il Capitolo 23, SQL per la modellazione per ulteriori informazioni su questo argomento. Come esempio di un compito, quello che se vogliamo definire un nuovo membro per la nostra dimensione temporale Vogliamo creare un membro 13 ° del livello di mese nella nostra dimensione tempo. Questo 13 ° mese, è definito come la somma delle vendite per ogni prodotto nel primo mese di ogni trimestre del 2001. La soluzione ha due fasi. Si noti che costruiremo questa soluzione utilizzando i punti di vista e le tabelle create nell'esempio precedente. Sono necessari due passaggi. In primo luogo, creare una vista con il nuovo membro aggiunto alla dimensione appropriata. La visualizzazione utilizza un UNION ALL operazione per aggiungere il nuovo membro. Per eseguire query utilizzando il membro personalizzato, utilizzare un'espressione CASE e un esterno partizionato join. Il nostro nuovo membro per la dimensione temporale viene creato con il seguente vista: In questa istruzione, il TIMEC vista è definito eseguendo una UNION ALL della vista edgetime (definito nell'esempio precedente) e il 13 ° mese definita dall'utente. Il valore gidt di 8 è stato scelto per differenziare il membro personalizzato da parte dei membri standard. L'UNION ALL specifica gli attributi per un membro di 13 mesi effettuando un SELECT dalla tabella DUAL. Si noti che l'ID, la colonna gidt raggruppamento. è impostato su 8, e il numero di quarto è impostato a 5. Quindi, il secondo passo è quello di utilizzare una vista in linea della query per eseguire un esterno partizionato join di cubeprodtime con TIMEC. Questo passaggio crea i dati di vendita per il 13 ° mese ad ogni livello di aggregazione del prodotto. Nella query principale, la funzione somma analitica viene utilizzata con un'espressione CASE per calcolare il mese 13, che è definito come la somma dei primi mesi vendite di ciascun trimestre. La funzione SUM utilizza un modo di limitare i dati da mesi 1, 4, 7, e 10 all'interno di ogni anno. A causa del piccolo insieme di dati, con solo 2 prodotti, i valori di rollup dei risultati sono necessariamente ripetizioni di aggregazioni di livello inferiore. Per serie più realistica di valori cumulativo, è possibile includere altri prodotti sottocategorie gioco per console e Y Box Games del sottostante vista materializzata. Analisi Varie e le capacità In questa sezione vengono illustrate le seguenti funzionalità di analisi aggiuntive segnalazione: Funzione WIDTHBUCKET Per una data espressione, la funzione WIDTHBUCKET restituisce il numero secchio che il risultato di questa espressione viene assegnato dopo che è stato valutato. È possibile generare istogrammi equiwidth con questa funzione. istogrammi Equiwidth dividono insiemi di dati in segmenti il ​​cui intervallo di dimensioni (valore più alto al più basso valore) è pari. Il numero di righe ricoperti da ciascun bucket varierà. Una funzione correlata, NTILE. crea secchi equiheight. istogrammi Equiwidth possono essere generati solo per numerico, data o tipo datetime. Così i primi tre parametri dovrebbero essere tutte le espressioni numeriche o tutte le espressioni di data. Altri tipi di espressioni non sono ammessi. Se il primo parametro è NULL. il risultato è nullo. Se il secondo o il terzo parametro è NULL. un messaggio di errore viene restituito, come un valore NULL non può indicare qualsiasi punto finale (o qualsiasi punto) per un intervallo in una data o dimensione di valore numerico. L'ultimo parametro (numero di secchi) deve essere un'espressione numerica che restituisce un valore intero positivo 0, NULL. o un valore negativo si tradurrà in un errore. Secchi sono numerati da 0 a (n = 1). Benna 0 detiene il conteggio dei valori inferiori al minimo. Benna (n 1) contiene il conteggio dei valori maggiori o uguali al valore massimo specificato. WIDTHBUCKET Sintassi La WIDTHBUCKET prende quattro espressioni come parametri. Il primo parametro è l'espressione che l'istogramma equiwidth è per. Il secondo e il terzo parametro sono espressioni che denotano i punti finali del campo accettabile per il primo parametro. Il quarto parametro indica il numero di secchi. Prendere in considerazione i seguenti dati da parte dei clienti della tabella. che mostra i limiti di credito di 17 clienti. Questi dati vengono raccolti nella query mostrato nell'esempio 22-24. Negli clienti tabella. il custcreditlimit colonna contiene valori compresi tra il 1500 e il 15000, e siamo in grado di assegnare i valori a quattro secchi equiwidth, numerate da 1 a 4, utilizzando WIDTHBUCKET (custcreditlimit, 0, 20000, 4). Idealmente ciascun segmento è un intervallo chiuso-aperto della vera linea di numero, ad esempio, secchio numero 2 è assegnato ai punteggi tra il 5000,0000 e 9999,9999. sometimes denoted 5000, 10000) to indicate that 5,000 is included in the interval and 10,000 is excluded. To accommodate values outside the range 0, 20,000), values less than 0 are assigned to a designated underflow bucket which is numbered 0, and values greater than or equal to 20,000 are assigned to a designated overflow bucket which is numbered 5 (num buckets 1 in general). See Figure 22-3 for a graphical illustration of how the buckets are assigned. Figure 22-3 Bucket Assignments You can specify the bounds in the reverse order, for example, WIDTHBUCKET ( custcreditlimit. 20000. 0. 4 ). When the bounds are reversed, the buckets will be open-closed intervals. In this example, bucket number 1 is ( 15000,20000 , bucket number 2 is ( 10000,15000 , and bucket number 4, is ( 0 ,5000 . The overflow bucket will be numbered 0 ( 20000. infinity ), and the underflow bucket will be numbered 5 (- infinity. 0 . It is an error if the bucket count parameter is 0 or negative. Example 22-24 WIDTHBUCKET The followin g query shows the bucket numbers for the credit limits in the customers table for both cases where the boundaries are specified in regular or reverse order. We use a range of 0 to 20,000. Linear Algebra Linear algebra is a branch of mathematics with a wide range of practical applications. Many areas have tasks that can be expressed using linear algebra, and here are some examples from several fields: statistics (multiple linear regression and principle components analysis), data mining (clustering and classification), bioinformatics (analysis of microarray data), operations research (supply chain and other optimization problems), econometrics (analysis of consumer demand data), and finance (asset allocation problems). Various libraries for linear algebra are freely available for anyone to use. Oracles UTLNLA package exposes matrix PLSQL data types and wrapper PLSQL subprograms for two of the most popular and robust of these libraries, BLAS and LAPACK. Linear algebra depends on matrix manipulation. Performing matrix manipulation in PLSQL in the past required inventing a matrix representation based on PLSQLs native data types and then writing matrix manipulation routines from scratch. This required substantial programming effort and the performance of the resulting implementation was limited. If developers chose to send data to external packages for processing rather than create their own routines, data transfer back and forth could be time consuming. Using the UTLNLA package lets data stay within Oracle, removes the programming effort, and delivers a fast implementation. Example 22-25 Linear Algebra Here is an example of how Oracles linear algebra support could be used for business analysis. It invokes a multiple linear regression application built using the UTLNLA package. The multiple regression application is implemented in an object called OLSRegression. Note that sample files for the OLS Regression object can be found in ORACLEHOMEplsqldemo . Consider the scenario of a retailer analyzing the effectiveness of its marketing program. Each of its stores allocates its marketing budget over the following possible programs: media advertisements ( media ), promotions ( promo ), discount coupons ( disct ), and direct mailers ( dmail ). The regression analysis builds a linear relationship between the amount of sales that an average store has in a given year ( sales ) and the spending on the four components of the marketing program. Suppose that the marketing data is stored in the following table: Then you can build the following sales-marketing linear model using coefficients: This model can be implemented as the following view, which refers to the OLS regression object: Using this view, a marketing program manager can perform an analysis such as Is this sales-marketing model reasonable for year 2004 data That is, is the multiple-correlation greater than some acceptable value, say, 0.9 The SQL for such a query might be as follows: You could also solve questions such as What is the expected base-line sales revenue of a store without any marketing programs in 2003 or Which component of the marketing program was the most effective in 2004 That is, a dollar increase in which program produced the greatest expected increase in sales See Oracle Database PLSQL Packages and Types Reference for further information regarding the use of the UTLNLA package and linear algebra. CASE Expressions Oracle now supports simple and searched CASE statements. CASE statements are similar in purpose to the DECODE statement, but they offer more flexibility and logical power. They are also easier to read than traditional DECODE statements, and offer better performance as well. They are commonly used when breaking categories into buckets like age (for example, 20-29, 30-39, and so on). The syntax for simple CASE statements is: Simple CASE expressions test if the expr value equals the comparisonexpr . The syntax for searched CASE statements is: You can use any kind of condition in a searched CASE expression, not just an equality test. You can specify only 65,535 arguments and each WHEN. THEN pair counts as two arguments. To avoid exceeding this limit, you can nest CASE expressions so that the returnexpr itself is a CASE expression. Example 22-26 CASE Suppose you wanted to find the average salary of all employees in the company. If an employees salary is less than 2000, you want the query to use 2000 instead. Without a CASE statement, you might choose to write this query as follows: Note that this runs against the hr sample schema. In this, foo is a function that returns its input if the input is greater than 2000, and returns 2000 otherwise. The query has performance implications because it needs to invoke a function for each row. Writing custom functions can also add to the development load. Using CASE expressions in the database without PLSQL, this query can be rewritten as: Using a CASE expression lets you avoid developing custom functions and can also perform faster. Example 22-27 CASE for Aggregating Independent Subsets Using CASE inside aggregate functions is a convenient way to perform aggregates on multiple subsets of data when a plain GROUP BY will not suffice. For instance, the preceding example could have included multiple AVG columns in its SELECT list, each with its own CASE expression. We might have had a query find the average salary for all employees in the salary ranges 0-2000 and 2000-5000. It would look like: Although this query places the aggregates of independent subsets data into separate columns, by adding a CASE expression to the GROUP BY clause we can display the aggregates as the rows of a single column. The next section shows the flexibility of this approach with two approaches to creating histograms with CASE . Creating Histograms You can use the CASE statement when you want to obtain histograms with user-defined buckets (both in number of buckets and width of each bucket). The following are two examples of histograms created with CASE statements. In the first example, the histogram totals are shown in multiple columns and a single row is returned. In the second example, the histogram is shown with a label column and a single column for totals, and multiple rows are returned. Example 22-28 Histogram Example 1 Example 22-29 Histogram Example 2 Frequent Itemsets Instead of counting how often a given event occurs (for example, how often someone has purchased milk at the grocery), you may find it useful to count how often multiple events occur together (for example, how often someone has purchased both milk and cereal together at the grocery store). You can count these multiple events using what is called a frequent itemset, which is, as the name implies, a set of items. Some examples of itemsets could be all of the products that a given customer purchased in a single trip to the grocery store (commonly called a market basket), the web pages that a user accessed in a single session, or the financial services that a given customer utilizes. The practical motivation for using a frequent itemset is to find those itemsets that occur most often. If you analyze a grocery stores point-of-sale data, you might, for example, discover that milk and bananas are the most commonly bought pair of items. Frequent itemsets have thus been used in business intelligence environments for many years, with the most common one being for market basket analysis in the retail industry. Frequent itemset calculations are integrated with the database, operating on top of relational tables and accessed through SQL. This integration provides the following key benefits: Applications that previously relied on frequent itemset operations now benefit from significantly improved performance as well as simpler implementation. SQL-based applications that did not previously use frequent itemsets can now be easily extended to take advantage of this functionality. Frequent itemsets analysis is performed with the PLSQL package DBMSFREQUENTITEMSETS. See Oracle Database PLSQL Packages and Types Reference for more information. In addition, there is an example of frequent itemset usage in Frequent itemsets . Scripting on this page enhances content navigation, but does not change the content in any way.

No comments:

Post a Comment