Reporting Agent

Z Reporting Wiki
Přejít na: navigace, hledání

Verze 3.x

Poslední verze ke stažení

 Verze 3.0.0 : ReportingAgent-3.0.0.zip

Spuštění

 ReportingAgent.exe [<ConfigFile>] [/c]
  • Parametry
    • <ConfigFile>
      • cesta ke konfiguračnímu souboru
      • default = Config.yaml
    • /c
      • dávkové spuštění
    • /remoteschedule 0|1
    • /schedulename <nazev_planu>

Konfigurace

  • soubor config.yaml
api_key: ???
endpoint: https://report.reporting.cz/api
# remote_schedule: true
# schedule_name: nazev_planu

logging:
    file: ReportingAgent.log
    append: true

compress: true # default = true

local_files:
    directory: 'C:\tmp\data\'    # default = user temp dir
    preserve: true
    delimiter: '\t'
    quote: ''
    encoding: UTF-16LE
    csv_header: false
    summary_file: 'summary.csv'

connections:
## MS SQL Server
    conn_1:
        driver: oledb
        connection: Provider=SQLNCLI11;Server=<server>;Database=<dbname>;Uid=<user>;Pwd=<password>;
 
# Oracle
# http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html
    conn_oracle:
        driver: oledb
        connection: Provider=MSDAORA.1;Data Source=127.0.0.1;User ID=dbuser;Password=1234
 
# Visual FoxPro
# http://www.microsoft.com/en-us/download/details.aspx?id=14839
    connection_foxpro:
        driver: oledb
        connection: Provider=vfpoledb;Data Source=<path_to_data_file>;
 
# Excel
    connection_excel:
        driver: oledb
        connection: provider=Microsoft.Jet.OLEDB.4.0;Data Source='workbook.xls';Extended Properties=Excel 8.0;
 
# Excel 2007+
    connection_excel12:
        driver: oledb
        connection: provider=Microsoft.ACE.OLEDB.12.0;Data Source='workbook.xlsx';Extended Properties=Excel 12.0 XML;
 
# Access 2007+
# https://www.microsoft.com/en-us/download/details.aspx?id=13255
    connection_access12:
        driver: oledb
        connection: provider=Provider=Microsoft.ACE.OLEDB.12.0;Data Source='data.accdb';
 
# LDAP via OleDb
    connection_ldap_oledb:
        driver: oledb
        connection: Provider=ADSDSOObject;User ID=<user>;Password=<password>;
 
# Firebird
# http://www.firebirdsql.org/en/odbc-driver/
    connection_firebird:
        driver: odbc
        connection: DRIVER=Firebird/InterBase(r) driver; UID=<user>; PWD=<password>; DBNAME=localhost:C:\data.fdb
 
# dalsi priklady na https://www.connectionstrings.com/
 
 
# File
    connection_file:
        driver: file
        connection:
            # source: file:///c:/tmp/data/
            # source: https://portal.reporting.cz
            # source: c:\tmp\data            source: c:\tmp\data            username:
            password:

 
# QuickBooks
    connection_qb:
        driver: qb
        connection:
            file: data.qb
            output_format: xml
            output_dir: c:\tmp
# LDAP
    connection_ldap:
        driver: ldap
        connection:
            server: ldap.exmaple.com:389
            username: "dc=example,dc=com"
            password: password
 

commands:
   # OLEDB/ODBC
   - connection: conn_1
     #command: "select 1 as COL1, 2 as COL2"
     command: > 
        select 1 as COL1, 2 as COL2
        union select 2 as COL1, 3 as COL2

     local_file: test.csv   # lokalni csv soubor s daty ze sql dotazu | default = random nazev
     etl_file: test.csv     # nazev souboru pod kterym je uploadovan do reporting etl
     #etl_thread: thread1   # nazev vlakna, ktere je spusteno po uploadu
 
 
 
   # File
   - connection: connection_file
     source: source.csv
     local_file: source_local.csv 
     etl_file: data.csv
 
 
 
   # Ldap
   - connection: connection_ldap
     command:
        dn: dc=example,dc=com
        filters:
            group1: (&(objectClass=*))
        properties: ['uid', 'mail', 'filter']

     local_file: users.csv
     etl_file: users.csv
 
 
 
   # QuickBooks
   - connection: connection_qb
     command: >
        <?qbxml version="8.0"?>
        <QBXML>
               <QBXMLMsgsRq onError="stopOnError">
                    <InvoiceQueryRq requestID="4">
                    </InvoiceQueryRq>
               </QBXMLMsgsRq>
        </QBXML>
     local_file: file2.csv
     etl_file: file2.csv
 
 
   # powershell
   - connection: powershell
     # spusteni celeho ETL (powershell >2.0)
     command: Invoke-WebRequest "https://report.reporting.cz/api/etl/runasync?key=<api_key>&year=<year>"
     # spusteni ETL vlakna (lze pouzit hvezdickovou konvenci pro spusteni vice vlaken v ramci Foderu: Folder/*)
     command: Invoke-WebRequest "https://report.reporting.cz/api/etl/run?key=<api_key>&path=<Thread name>"
 
     # spusteni celeho ETL (powershell <=2.0)
     command: (New-Object System.Net.WebClient).DownloadString("https://report.reporting.cz/api/etl/runasync/?key=<api_key>&year=<year>")
     # spusteni ETL vlakna (lze pouzit hvezdickovou konvenci pro spusteni vice vlaken v ramci Foderu: Folder/*)
     command: (New-Object System.Net.WebClient).DownloadString("https://report.reporting.cz/api/etl/run?key=<api_key>&path=<ETL thread>")

Předávání parametrů

Parametry jdou použít kdekoliv v konfiguračním souboru ve formátu ${nazev_parametru}. Jako parametry jsou použity hodnoty z prvního řádku výsledku vlákna typu agent. Pokud je název vlákna shodný s hodnotou schedule_name, pak je použito toto vlákno, v opačném případě se použije vlákno, které je první.

V powershell scriptu jsou parametry dostupné v objektu $parms:

   - connection: powershell
     command: Invoke-WebRequest "https://report.reporting.cz/api/etl/runasync?key=$($api_key)&year=$($params.year)"

Binární soubory

Výsledek selectu může obsahovat sloupec s binárnímy daty, které lze uploadovat do reportingu:

   - connection: conn1
     command: select FILE_NAME, FILE_DATA from FILES
     binary_column: FILE_DATA
     binary_column_name: FILE_NAME

Každý soubor ze sloupce binary_column je uploadován do reportingu pod názvem binary_column_name. Hodnota sloupce binary_column je ve výsledném csv souboru nahrazena SHA1 hashem souboru.

Šifrování

Vybrané sloupce v csv souboru je možné zašifrovat:

   encryption_key: JbmYRthE7ocHkj4fuJn5sQ4gqCPlflna8um1JkBPgKQ=
   - connection: conn1
     command: select COL1, COL2, COL3 from TAB1
     encrypted_columns: ['COL2', 'COL3']

Verze 1.x

Spuštění

 ReportingAgent.exe [<ConfigFile>] [/c] [/d] [/s]
  • Parametry
    • [<ConfigFile>]
      • cesta ke konfiguračnímu souboru
      • default = Config.yaml
    • [/c]
      • dávkové spuštění
    • [/d]
      • smaže soubory vytvořené v průběhu spuštění programu
    • [/s]
      • povoluje vzdalene overeni spusteni uploadu proti planu nastavenem v Reporting aplikaci

Konfigurace

  • soubor config.xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
 
  <connections>
    <!--
      https://www.connectionstrings.com/
 
      ===== OLEDB ======
        Sql Server
          <connection driver="oledb">Provider=SQLNCLI11;Server=NOTE-PETR;Database=Reporting_Test;Uid=sa;Pwd=sysadmin;</connection>
        Visual FoxPro
          <connection driver="oledb">Provider=vfpoledb;Data Source=C:\dev\REPORTING\3P\Premier\3p_consulting_sro20130409_1</connection>
        LDAP
          <connection id="ldap_oledb" driver="oledb">Provider=ADSDSOObject;User ID=tesla;Password=password;</connection>
 
      ===== ODBC ======
        Firebird
          <connection driver="odbc">DRIVER=Firebird/InterBase(r) driver; UID=SYSDBA; PWD=masterkey; DBNAME=localhost:C:\data.fdb</connection>
 
      ===== Native Sql Server ======
        <connection driver="sqlsrv"></connection>
 
      ===== HTTP ======
      <connection id="http" driver="http">username=petr.cechura@reporting.local;password=23b5417dd9;path=https://portal.reporting.cz/Sdilene%20dokumenty/Internal/Software/ReportingAgent/tmp/test.xlsx</connection>
 
      ===== QuickBooks =====
        <connection id="qb" driver="quickbooks">file=test.qb;outputFormat=xml;outputDir=c:\tmp\</connection>
 
      ===== LDAP =====
        <connection id="ldap1" driver="ldap">
          server="ldap.forumsys.com:389";
          username="uid=tesla,dc=example,dc=com";
          password=password;
        </connection>
 
        Server
          Řetězec určující server, který může být název domény, název serveru LDAP nebo tečkovaný řetězce představující adresu IP serveru LDAP.
          Tento parametr volitelně také obsahovat číslo portu, oddělené od pravého konce řetězce dvojtečkou (:).)
 
    -->
 
    <connection driver="oledb">Provider=SQLNCLI11;Server=NOTE-PETR;Database=Reporting_Test;Uid=sa;Pwd=sysadmin;</connection>
 
  </connections>
 
  <uid>uid:password</uid>
 
  <!--
    CloverETL
      <upload_endpoint>https://cloveretl.reporting.cz/cgi-bin/upload.php</upload_endpoint>
  -->
  <upload_endpoint>https://report.reporting.cz/etl.agent/upload/</upload_endpoint>
 
  <!--
    připojení pro stažení parametrů z reporting serveru
    <reporting_endpoint queries="false" params="true" schedule="false">https://report.reporting.cz/etl.agent/</reporting_endpoint>
  -->
  <reporting_endpoint queries="false" params="true" schedule="false">https://report.reporting.cz/etl.agent/</reporting_endpoint>
 
  <log append="true">c:\tmp\ReportingAgent.log</log>
 
  <queries encoding="utf-8">
  <!--
    seznam dotazů s výsledky ukládanými do souborů a odesílanými na <upload_endpoint>
    remote="true" stáhne dodatečné dotazy z <reporting_endpoint>
 
    ====== Soubory ======
      <files>
        <file name="file1" path="C:\tmp\dev\file.csv" />
        <file name="file2" path="C:\tmp\dev\file2.csv" />
      </files>
 
    ====== LDAP ======
    http://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx
 
    <query name="ldap_test" file="ldap_users.csv" connection="ldap1" header="true">
      dn="dc=example,dc=com";
      filter[YourGroup]="(&(objectClass=user)(memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com))";
      properties="uid,mail,filter";
    </query>
 
    ====== QuickBooks ======
    <query name="invoice" file="qb_invoice.csv" connection="qb" header="true">
      <![CDATA[<?xml version="1.0" ?>
        <?qbxml version="8.0"?>
        <QBXML>
           <QBXMLMsgsRq onError="stopOnError">
              <InvoiceQueryRq requestID="4">
              </InvoiceQueryRq>
           </QBXMLMsgsRq>
        </QBXML>]]>
    </query>
 
    <query name="accounts" file="qb_accounts.csv" connection="qb" header="true">
      <![CDATA[<?xml version="1.0" ?>
        <?qbxml version="8.0"?>
        <QBXML>
           <QBXMLMsgsRq onError="stopOnError">
              <AccountQueryRq requestID="1">
              </AccountQueryRq>
           </QBXMLMsgsRq>
        </QBXML>]]>
    </query>
 
    ===== OLEDB/ODBC/SQLSRV ======
    <query name="transactions" file="bla.csv" connection="conn1" header="true">
      -year = ${year}
      SELECT TOP 100 [IDZ], [ACCOUNTING], [ID_ACCOUNTING], [DB_CR], [YEAR], [YYYYMM], [DATE_ACCT] FROM [Reporting_Test].[dbo].[F_ACCOUNTING] WHERE  IDZ = 14
    </query>
 
    ===== HTTP => Excel ======
    <query name="excel" file="excel.csv" connection="http" header="true">
      select COL1, COL2, COL3 from [Sheet1$]
    </query>
 
     ===== OLEDB - LDAP ======
    <query connection="ldap_oledb" file="test.csv" header="true">
      SELECT * From 'LDAP://ldap.forumsys.com:389/dc=example,dc=com'
    </query>
 
  -->
 
    <!-- <query file="i_user.csv" connection="ldap" header="true" etl-run="import_users">
      dn="dc=example,dc=com";
      filter[secGroup1]="(&amp;(objectClass=user)(memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com))";
      filter[secGroup2]="(objectClass=inetOrgPerson)";
      properties="uid,mail,filter";
    </query> -->
 
    <query name="transactions" file="test.csv" connection="conn1" header="true">
      SELECT TOP 100 [IDZ], [ACCOUNTING], [ID_ACCOUNTING], [DB_CR], [YEAR], [YYYYMM], [DATE_ACCT] FROM [Reporting_Test].[dbo].[F_ACCOUNTING] WHERE  IDZ = 14
    </query>
 
  </queries>
</configuration>