mercoledì 3 luglio 2019

RDBMS ORACLE - To_Char Function di oracle perde lo zero

Di seguito un comportamento un pò strano della funzione TO_CHAR di oracle in presenza della conversione di number.
In Oracle, quando si converte un numero con uno zero iniziale in un carattere, il numero iniziale scompare.

Per ovviare a questo piccolo problema si può impostare la mask nel TO_CHAR, un esempio potrebbe essere il seguente:


La mask  'FM99999999999999.99999' utilizzata non va bene, occorre quindi esplicitare lo zero nelle mask.


La mask corretta è 'FM999999999999990.99999', come si vede sopra, peccato che se si effettua lo spool su file il problema rimane. A questo punto facciamo una piccola modifica ed il problema è risolto.



Soluzione ottenuta grazie, come al solito alla documentazione, ma in questo caso particolare grazie a Matteo Iacari.


Qui trovate ulteriori informazioni sulla Funzione TO_CHAR(number, format)







venerdì 15 febbraio 2019

ODI 12c - Utilizzo di variabili che richiamano operazioni di sistema operativo

Spesso nasce il problema di dover effettuare una wc -l su un file e poi verificarne il risultato, su ODI è facile l'utilizzo di variabili che accedono al database ma come si fa per estrarre valori da un file senza effettuare una load di un file in tabella?
Quanto indicheremo sotto è valido solo per l'estrazione di una riga da un file.
Vediamo passo passo come effettuare.

  1. Creazione di una variabile che effettui una select da sistema operativo.
  2. Creazione di una variabile di tipo testo che contenga in maniera dinamica il nome del file.
  3. Creazione di un package che richiama:
    1. la variabile indicata al passo 2 come set 
    2. la variabile indicata al passo 1 come refresh
  •  Come primo passo occorre creare una varibiale che effettui una select su sistema operativo e ce abbia la seguente sintassi, un pò ostica.
      select    COUNT_FILE.MAX_LEVEL    MAX_LEVEL
    from     #TI_INFOBOARD.V_FILE_AND_PATH COUNT_FILE
 /*$$SNPS_START_KEYSNP$CRDWG_TABLESNP$CRTABLE_NAME=#TI_INFOBOARD.INPUT_FILE_CC.txt

 SNP$CRLOAD_FILE=#TI_INFOBOARD.V_FILE_AND_PATHSNP$CRFILE_FORMAT=D
 SNP$CRFILE_SEP_FIELD=0x002cSNP$CRFILE_SEP_LINE=0x000A
 SNP$CRFILE_FIRST_ROW=0SNP$CRFILE_ENC_FIELD=SNP$CRFILE_DEC_SEP=SNP$CR
 SNP$CRDWG_COLSNP$CRCOL_NAME=MAX_LEVELSNP$CRTYPE_NAME=STRINGSNP$CRORDER=1
 SNP$CRLENGTH=0SNP$CRACTION_ON_ERROR=NULLSNP$CR$$SNPS_END_KEY*/


          Di seguito una piccola legenda di quanto indicato tra /* e */



  •  Creazione della variabile di tipo testo che contiene il path dinamico.


  • Creazione del comando di sistema operativo che effettua la wc -l di un file ed inserisce il risultato in un altro file che poi contiene il valore da leggere.
            wc -l <PATH_FILE_1> | awk '{print $1}' > <PATH_FILE_1>_CC.txt


 
  •  Creazione Package che richiama le variabili.


giovedì 27 settembre 2018

Dynamic Converter Engine (DCE) - Migration IBM DataStage to Oracle Data Integrator (ODI)

Ciao a tutti oggi riprendo a scrivere condividendo il mio lavoro degli ultimi mesi.
La creazione di un software per la migrazione automatica da IBM DataStage ad Oracle Data Integrator ODI versione 12c.












































lunedì 25 settembre 2017

Top 100 Oracle Blog

Salve a tutti oggi mi hanno comunicato che come blog siamo al 69° posto sui primi 100 blogs che parlano della tecnologia Oracle.
Se mi date una mano con le visualizzazioni forse riusciamo ad arrivare tra i primi 60 se poi volete risposte su qualche prodotto Oracle in particolare fatemi sapere.





Ciao

venerdì 22 settembre 2017

OBIEE 12C : Configure Write-Back in BI 12c

Oggi vediamo come abiltare il Write-Back sulla OBIEE 12c, questa opzione permette di inserire dati su una tabella da web. Si utilizza spesso per inserire dei commenti e permettere a più utenti di effettuare una pseudo chat.
Vediamo di seguito i differenti passaggi, tenendo presente la documentazione a questo link [Configuring for Write Back in Analyses and Dashboards]


La configurazione si compone dei seguenti passi:
  1. Creazione tabella in database
  2. Configurazione OBIEE Server
  3. Configurazione RPD
  4. Configurazione/Creazione Report analisi
  • Creazione Tabella
 Come primo step creiamo su un database una tabella su cui effettuiamo update ed insertdi eventuali  commenti e creiamo anche una sequence che sarà utilizzata per inserire i dati nella chiave della tabella.

CREATE SEQUENCE SEQ_ID INCREMENT BY 1 START WITH 1 MAXVALUE 9999999999999999999999999999999999999999999999 MINVALUE 1 NOCACHE ORDER;

create table  lot_comment
(
iD              NUMBER ,
CREATED_DATE     DATE         ,
UPDATE_DATE     DATE         ,
DASHBOARD_PAGE     VARCHAR2(100),
USER_ID         VARCHAR2(50) ,
USER_NAME         VARCHAR2(100),
FEEDBACK         VARCHAR2(600),
COMMENT_KEY1     VARCHAR2(100),
COMMENT_KEY2     VARCHAR2(100),
COMMENT_KEY3     VARCHAR2(100),
COMMENT_KEY4     VARCHAR2(100),
COMMENT_KEY5     VARCHAR2(100)
);


  •  Configurazione OBIEE Server

Secondo step è la configurazione del server OBIEE e nello specifico occorre fare quanto segue. Verifichiamo il nome del dominio e dove si trova:


[oracle@fmw12c fmw]$ more domain-registry.xml
<?xml version="1.0" encoding="UTF-8"?>
<domain-registry xmlns="http://xmlns.oracle.com/weblogic/domain-registry">
  <domain location="/product/odi/SW122126/obiee122120/bi"/>
</domain-registry>


A questo punto dobbiamo inserire la seguente riga:

<LightWriteback>true</LightWriteback>

nel file instanceconfig.xml, ricordiamoci sempre di fare un backup prima.

[oracle@fmw12c fmw]$ cd /product/odi/SW122126/obiee122120/bi/config/fmwconfig/biconfig/OBIPS
[oracle@fmw12c OBIPS]$ ll
total 88
-rw-r-----. 1 oracle oracle   310 Apr 20 17:21 catalogmanager.logging.properties
-rw-r-----. 1 oracle oracle  5271 Apr 20 17:12 credentialstore.xml
-rw-r-----. 1 oracle oracle  4876 Apr 20 17:12 instanceconfig.xml
-rw-r-----. 1 oracle oracle  7412 Apr 20 17:12 marketingwebexpressions.xml
-rw-r-----. 1 oracle oracle 43659 Apr 20 17:12 toc-template.rtf
-rw-r-----. 1 oracle oracle  9570 Apr 20 17:12 upgradelogtransform.xsl
-rw-r-----. 1 oracle oracle  1489 Apr 20 17:12 userpref_currencies.xml

[oracle@fmw12c OBIPS]$ vi instanceconfig.xml
[oracle@fmw12c OBIPS]$  diff instanceconfig.xml instanceconfig.xml_20170920
5,6d4
<         <DSN>AnalyticsWeb </DSN>
<         <LightWriteback>true</LightWriteback>
7a6
>         <DSN>AnalyticsWeb</DSN>
102,104d100
<         <!-- inserimento x writeback -->
<         <!--LightWriteBack>true</LightWriteBack -->
<         <!-- inserimento x writeback -->
[oracle@fmw12c OBIPS]$ 



Ulteriore step è la creazione di un file in fomato xml che contenga le info di insert/update della tabella che verrà utilizzata dal Write Back.

    <?xml version="1.0" encoding="utf-8" ?>
    <WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1">
    <WebMessageTable lang="en-us" system="WriteBack" table="Messages">
       <WebMessage name="TestWriteback">
          <XML>
    <writeBack connectionPool="LOTOMATIC">
    <insert> </insert>
    <update> UPDATE LOT_COMMENT SET FEEDBACK='@2',COMMENT_KEY1='@3' WHERE ID=@1 </update>
    </writeBack>
         </XML>
       </WebMessage>
    </WebMessageTable>

    </WebMessageTables>


    Questo file si deve chiamare "custommessage.xml"  e deve essere posto secondo la documentazione nella directory SDD/components/OBIPS/customMessages dove SDD sta per Singleton Data Directory, nel mio caso

     /product/odi/SW122126/obiee122120/bi/bidata/components/OBIPS/customMessages

     peccato che non funziona ed occorre inserirlo in un'altra directory che se non esiste va creata e dipende dal linguaggio utilizzato sulla OBIEE:

    /product/odi/SW122126/obiee122120/bi/bidata/service_instances/ssi/metadata/content/msgdb/l_en/customMessages/


    • Configurazioni RPD

    Una volta configurato il server passiamo alle modifiche all'rpd.
    Come step iniziale occorre effettuare il check sul database come indicato in figura:



    Poi si effettua l'import della tabella fisica sul repository dececcando la cache:



    Una volta importata la tabella procediamo nel dare i permessi necessari agli utenti per scrivere sul db.
    Ci posizioniamo su "Manage"-"Identity" e settiamo l'esecuzione ad "Allow" sul database, come in figura:


    A questo punto importiamo la tabella sul presentetion:


    E modifichiamo le proprietà delle colonne su cui dobbiamo poter scrivere andando ad abilitare il check "Writeable" su tutti i layer, come in figura.


    A questo punto per ogni colonna soggetta a Write back dare i permessi di modifica ai differenti ruoli o utenti:


    • Configurazione/Creazione Report analisi
    Terminati i passi precedenti salvare e passare alla parte web per la creazione del report e  per la  modifica dei permessi del Write back sull'Administration:


    A questo punto la configurazione è terminata e non resta che creare il report settando i check sulle colonne nei "Criteria" e la tabella su "Results".







    Inseriamo il report nel dashbord e facciamo la prova se tutto funziona.
    Sul database abbiamo la seguente situazione:


    Sul Dashboard appare quanto presente sul DB.


    A questo punto cliccando su Update appaiono i tre tasti inferiori ed è possibile effettuare la modifica del dato:



    Una volta modificato il dato cliccando su Apply e Done la modifica viene eseguita.





    Quanto modificato facendo Apply si applica sul DB.



    Questo è tutto... alcune cose sono state omesse per lasciare a voi il piacere di smanettare e smadonnare se qualche spazio o carattere sporco che finisce nei file xml.

    Alla prossima.