Aplikacja przetwarzająca własne funkcje agregujące w kodzie zarządzalnym.



Podobne dokumenty
INFORMATOR TECHNICZNY WONDERWARE

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Zalecana instalacja i konfiguracja Microsoft SQL Server 2016 Express Edition dla oprogramowania Wonderware

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Pracownia internetowa w szkole ZASTOSOWANIA

Instrukcja instalacji Control Expert 3.0

Dokumentacja instalacyjna i konfiguracyjna Aplikacja ADR. Wersja dokumentu 1.0. Strona 1/9

Bazy danych i usługi sieciowe

Język SQL, zajęcia nr 1

INSTRUKCJA INSTALACJI DATAMOBILE. Ver. 1.3

Bazy Danych i Usługi Sieciowe

Instalacja programu Ozon.

Asix. Konfiguracja serwera MS SQL dla potrzeb systemu Asix. Pomoc techniczna NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

INFORMATOR TECHNICZNY WONDERWARE. Ograniczenie wyświetlania listy zmiennych w przeglądarce zmiennych ActiveFactory

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

Instrukcja instalacji i konfiguracji bazy danych SQL SERVER 2008 EXPRESS R2. Instrukcja tworzenia bazy danych dla programu AUTOSAT 3. wersja 0.0.

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Copyright 2012 COIG SA Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek

Migracja bazy danych Microsoft Access *.mdb do Microsoft SQL 2008 Server R2 SP1 dla oprogramowania Płatnik

LAB 3 (część 1 Projektu)

Wykład 8. SQL praca z tabelami 5

Problemy techniczne SQL Server

Problemy techniczne SQL Server

INFORMATOR TECHNICZNY WONDERWARE

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

PHP: bazy danych, SQL, AJAX i JSON

Jak przenieść bazę danych na zdalny serwer?

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Wprowadzenie do JDBC z wykorzystaniem bazy H2

Program kadrowo płacowy - wersja wielodostępna z bazą danych Microsoft SQL Server 2005 lub 2008

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Pomoc dla usługi GMSTHostService. GMSTHostService. Pomoc do programu 1/14

MS Windows Vista. Spis treści. Autor: Jacek Parzonka, InsERT

MikroTik Serwer OpenVPN

Zasady współpracy programu Doradca Handlowy z Symfonią

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Wykład 5. SQL praca z tabelami 2

Tuning SQL Server dla serwerów WWW

Problemy techniczne SQL Server. Zarządzanie bazami danych na serwerze SQL

Windows Server 2008 Standard Str. 1 Ćwiczenia. Opr. JK. I. Instalowanie serwera FTP w Windows Server 2008 (zrzuty ekranowe z maszyny wirtualnej)

Problemy techniczne SQL Server

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Ćwiczenia 2 IBM DB2 Data Studio

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Program Import Kontrahentów XLS dla Subiekta GT.

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Dokumentacja fillup - MS SQL

Wykład 3 Inżynieria oprogramowania. Przykład 1 Bezpieczeństwo(2) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Problemy techniczne SQL Server

Podstawowe wykorzystanie Hibernate

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Procedury techniczne modułu Forte Kontroling. Pakiety DTS

Przykładowa konfiguracja komunikacji pomiędzy oprogramowaniem Wonderware i Codesys z wykorzystaniem sieci LAN lub modułu GSM

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Instalacja MySQL.

Kostki OLAP i język MDX

Currenda EPO Instrukcja Konfiguracji. Wersja dokumentu: 1.3

R o g e r A c c e s s C o n t r o l S y s t e m 5

Bazy danych. Polecenia SQL

Problemy techniczne SQL Server. Jak odblokować porty na komputerze-serwerze, aby umożliwić pracę w sieci?

baza MS SQLEXPRES domyślnie po instalacji nie umożliwia obsługi połączenia z innego komputera

Instrukcja instalacji

Systemowe aspekty baz

Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych. Paweł Paduch paduch@tu.kielce.pl

Kopiowanie i instalowanie pliku w systemie Windows CE

Język SQL, zajęcia nr 2

Ko n f i gura cja p ra cy V ISO z bazą SQL S e rve r

Wstęp. Opis ten dotyczy wydziałów orzeczniczych.

Problemy techniczne SQL Server. Zarządzanie bazami danych na serwerze SQL

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Administracja i programowanie pod Microsoft SQL Server 2000

Wykład 05 Bazy danych

Zastępstwa Optivum. Jak przenieść dane na nowy komputer?

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Wprowadzenie do Doctrine ORM

Projektowanie systemów baz danych

asix Autoryzacja dostępu do zasobów WWW systemu asix (na przykładzie systemu operacyjnego Windows 2008)

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Wdrożenie modułu płatności eservice. dla systemu Magento

INFORMATOR TECHNICZNY WONDERWARE

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Procedury techniczne modułu Forte Kontroling. Raportowanie danych w MS Excel - Konfiguracja IIS na Windows oraz wykonanie importu

Informatyka I : Tworzenie projektu

dziennik Instrukcja obsługi

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Uruchamianie bazy PostgreSQL

Systemowe aspekty baz danych

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

SQL Server Configuration Manager centrum dowodzenia

INSTALACJA LICENCJI SIECIOWEJ NET HASP Wersja 8.32

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Problemy techniczne SQL Server

5. Uruchomienie SQL Server Business Intelligence Development Studio Menu Start -> SQL Server Business Intelligence Development Studio

Transkrypt:

Aplikacja przetwarzająca własne funkcje agregujące w kodzie zarządzalnym. Krzysztof Grządziel, R4IS2 23 stycznia 2010 Streszczenie W artykule znajduje się opis wykonanych kroków potrzebnych do utworzenia własnych funkcji agregujących 1 w kodzie zarządzanym w bazie danych MS SQL Server 2008. Funkcje agregujące napisane zostały w języku C#. Pokazane zostało tworzenie assembly za pomocą Microsoft Visual Studio 2008, import assembly do bazy danych oraz stworzenie agregatów korzystających z naszej klasy. Konfiguracja MS SQL Server 2008 pozwalająca na połącznie się z bazą danych aplikacjom zewnętrznym. Na koniec pokazane zostały zapytania T-SQL na przykładowych danych, które wykorzystują nasze funkcje agregujące oraz wykresy z przetworzonymi danymi. Spis treści 1 Własne funkcje agregujące 1 1.1 Tworzenie funkcji agregujących przy pomocy Visual Studio 2008............ 1 1.2 Rejestrowanie assembly i agregatów w bazie przy pomocy T-SQLa........... 2 2 Dane 2 2.1 Schemat tabel......................................... 2 2.2 Pozyskanie danych...................................... 3 2.3 Importowanie danych do tabel............................... 3 3 Zapytania SQL 3 3.1 Średnia krocząca....................................... 3 3.2 Średnia ważona........................................ 4 3.3 Pozostałe średnie....................................... 4 4 Konfiguracja MS SQL Server dla aplikacji PHP 4 4.1 Konfiguracja MS SQL Server................................ 4 5 Aplikacja PHP 5 5.1 Zapytania SQL wykorzystane w aplikacji.......................... 5 5.2 Wykresy wygenerowane przez aplikację........................... 5 1 Własne funkcje agregujące 1.1 Tworzenie funkcji agregujących przy pomocy Visual Studio 2008 1. Otwieramy Microsoft Visual Studio 2008 2. klikamy File New Project 3. następnie Other Languages 4. Visual C# Database SQL Server Project, ustawiamy pole name np. na MyAggregates, OK 5. Ustawiamy referencje do naszej bazy danych, OK 6. PPM 2 na MyAggregates Add Aggregate... 7. Ustawiamy Aggregate, pole name jako nazwe naszej funkcji np. AVGGeo.cs, Add 8. implementujemy naszą funkcję agregującą 1 UDA User Defined Aggregates 2 prawy przycisk myszy 1

9. po zaimplementowaniu, klikamy Bulid Build MyAggregates, aby skompilować 10. następnie Bulid Deploy MyAggregates, Visual Studio zarejestruje za nas Assembly oraz napisane przez nas funkcje agregujące, ale UWAGA! tylko te, które przyjmują tylko jeden parametr 11. jeżeli napisalśmy funkcję agregującą, która przyjmuje więcej parametrów niż jeden, musimy ją zarejestrować ręcznie używając T-SQLa. Przygotowaną solucję i funkcje agregujące można znaleźć w.\examples\p15 agregaty.zip 1.2 Rejestrowanie assembly i agregatów w bazie przy pomocy T- SQLa Skompilować assembly z kodu zródłowego można za pomocą komendy w linii poleceń, np. 1 c s c / t a r g e t : l i b r a r y C: \AVGGeo. c s Assembly oraz funkcje agregujące dodajemy za pomocą T-SQLa w nastepujący sposób (dla kodu znajdującego sie w.\examples\p15 agregaty.zip) 1 exec s p c o n f i g u r e c l r enabled, 1 2 GO 3 RECONFIGURE WITH OVERRIDE 4 GO 5 6 IF EXISTS (SELECT name FROM s y s o b j e c t s WHERE name = AVGWeighted ) 7 DROP AGGREGATE AVGWeighted 8 IF EXISTS (SELECT name FROM s y s o b j e c t s WHERE name = AVGHarm ) 9 DROP AGGREGATE AVGHarm 10 IF EXISTS (SELECT name FROM s y s o b j e c t s WHERE name = AVGGeo ) 11 DROP AGGREGATE AVGGeo 12 GO 13 14 IF EXISTS (SELECT name FROM s y s. a s s e m b l i e s WHERE name = MyAggregates ) 15 DROP ASSEMBLY MyAggregates 16 GO 17 18 CREATE ASSEMBLY MyAggregates FROM C: \ Users \ Administrator \Documents\ h e l l o \ S q l S e r v e r P r o j e c t 8 \AVGGeo\ obj \Debug\ S q l C l a s s L i b r a r y. d l l 19 GO 20 21 CREATE AGGREGATE AVGGeo ( @value f l o a t ) RETURNS f l o a t 22 EXTERNAL NAME MyAggregates.AVGGeo 23 CREATE AGGREGATE AVGHarm ( @value f l o a t ) RETURNS f l o a t 24 EXTERNAL NAME MyAggregates.AVGHarm 25 CREATE AGGREGATE AVGWeighted ( @value float, @weight f l o a t ) RETURNS f l o a t 26 EXTERNAL NAME MyAggregates. AVGWeighted 27 28 GO 2 Dane 2.1 Schemat tabel Listing 1: Tworzenie tabeli spolki2 1 CREATE TABLE [ dbo ]. [ s p o l k i 2 ] ( 2 [ i d ] [ int ] NOT NULL, 3 [ nazwa ] [ nvarchar ] ( 5 0 ) NOT NULL, 4 [ symbol ] [ nvarchar ] ( 1 0 ) NOT NULL, 5 CONSTRAINT [ PK spolki2 ] PRIMARY KEY CLUSTERED 6 ( 7 [ i d ] ASC 8 )WITH (PAD INDEX = OFF, STATISTICS NORECOMPUTE = OFF, IGNORE DUP KEY = OFF, 9 ALLOW ROW LOCKS = ON, ALLOW PAGE LOCKS = ON) ON [PRIMARY] 10 ) ON [PRIMARY] W tabeli spolki2 trzymamy nazwy spółek. 1 CREATE TABLE [ dbo ]. [ notowania2 ] ( 2 [ i d ] [ int ] NOT NULL, 3 [ s p o l k i i d ] [ int ] NOT NULL, 4 [ data ] [ date ] NOT NULL, 5 [ otw ] [ decimal ] ( 1 0, 3) NOT NULL, Listing 2: Tworzenie tabeli notowania2 2

6 [ min ] [ decimal ] ( 1 0, 3) NOT NULL, 7 [max] [ decimal ] ( 1 0, 3) NOT NULL, 8 [ zamnk ] [ decimal ] ( 1 0, 3) NOT NULL, 9 [ zmiana ] [ decimal ] ( 1 0, 3) NOT NULL, 10 [ wolumen ] [ int ] NOT NULL, 11 CONSTRAINT [ PK notowania2 ] PRIMARY KEY CLUSTERED 12 ( 13 [ i d ] ASC 14 )WITH (PAD INDEX = OFF, STATISTICS NORECOMPUTE = OFF, IGNORE DUP KEY = OFF, 15 ALLOW ROW LOCKS = ON, ALLOW PAGE LOCKS = ON) ON [PRIMARY] 16 ) ON [PRIMARY] W tabeli notowania2 przechowujemy dane na temat notowań spółek, przygotowane tak jak w punkcie (2.2). 2.2 Pozyskanie danych Dane pobieramy z serwisu http://www.money.pl/gielda/archiwum/spolki/ za pomocą skryptu grab.sh, znajduje się on w (.\example\grab.sh). Użycie: 1. / grab. sh <symbol s p o l k i > <katalog, do ktorego zapisujemy pobrane dane> Przykład: 1. / grab. sh TPS t p s a 2. / grab. sh KGH kghm 2.3 Importowanie danych do tabel Dodanie danych do spolki2 1 INSERT INTO dbo. s p o l k i 2 values ( 1, KGHM, KGH ), ( 2, TPSA, TPS ), 2 ( 3, INGBSK, ING ) ; Aby zaimportować pozyskane dane do notowania2, dane muszą być odpowiednio przygotowane. W naszym przypadku oczyszczamy pobrane dane ze zbędnych linii, poleceniem (dla notowań TPSA) 1 sed n /ˆ 200/p. / tpsa /TPS 200 > tpsa TPS. csv dla pozostałych analogicznie. Następnie należy dodać na początku każdego wiersza, id rekordu (kolumna id), oraz id spółki, zgodny z numerem spółki w tabeli spolki2 (kolumna spolki id) np. importując dane do Microsoft Office Excel, dodając odpowiednie kolumny i eksportując dane spowrotem do pliku.csv. Tak przygotowany plik można znaleźć w.\examples\kghm tpsa ing.csv Na koniec impotujemy plik z danymi do bazy danych 1 BULK INSERT dbo. notowania2 2 FROM C: \ Users \ Administrator \ Desktop \ kghm tpsa ing. csv 3 WITH ( FIELDTERMINATOR = ;, ROWTERMINATOR = \n ) 3 Zapytania SQL Poniżej znajdują się przykładowe zapytania SQL dla danych z tabeli notowania2 z użyciem własnych funkcji agregujących. 3.1 Średnia krocząca Zapytanie zwraca prostą średnią krocząca z 10 ostatnich próbek 1 SELECT x. data as xdata, AVG( y. wolumen ) 2 FROM 3 (SELECT ROWNUMBER( ) OVER (ORDER BY data ASC) AS Row, data FROM dbo. notowania2 where s p o l k i i d = 2) AS x, 4 (SELECT ROWNUMBER( ) OVER (ORDER BY data ASC) AS Row, data, wolumen FROM dbo. notowania2 where s p o l k i i d = 2 ) AS y 5 WHERE x. Row between y. Row AND y. Row+9 6 GROUP BY x. data 7 ORDER BY x. data ASC 3

3.2 Średnia ważona Zapytanie zwraca średnią ważoną kolumny zamnk z wagą zmiana grupując je miesiącami 1 SELECT CAST( data AS CHAR( 7 ) ) AS data, dbo. AVGWeighted ( zamnk, zmiana ) AS avgweight 2 FROM dbo. notowania2 3 WHERE s p o l k i i d = 2 AND data BETWEEN 2009 01 01 AND 2009 12 31 4 GROUP BY CAST( data as CHAR( 7 ) ) 5 ORDER BY data ASC 3.3 Pozostałe średnie Zapytanie zwracające prostą średnią kroczącą, kroczącą średnią geometryczną oraz kroczącą średnią harmoniczną z 10 ostatnich próblek dla akcji TPSA w przedziale od 2009-01-01 do 2009-12-31. 1 SELECT x. data AS xdata, AVG( y. wolumen ) AS vol, dbo.avggeo( y. wolumen ) AS avggeo, dbo. AVGHarm( y. wolumen ) AS avgharm 2 FROM 3 (SELECT ROWNUMBER( ) OVER (ORDER BY data ASC) AS Row, data FROM dbo. notowania2 WHERE s p o l k i i d = 2) AS x, 4 (SELECT ROWNUMBER( ) OVER (ORDER BY data ASC) AS Row, data, wolumen FROM dbo. notowania2 WHERE s p o l k i i d = 2 ) AS y 5 WHERE x. data BETWEEN 2009 01 01 AND 2009 12 31 AND x. Row BETWEEN y. Row AND y. Row +9 6 GROUP BY x. data 7 ORDER BY x. data ASC 4 Konfiguracja MS SQL Server dla aplikacji PHP Próba uruchomienia usługi Apache/2.2.14 (Win32) + PHP 5.3 (5.3.1) VC6 x86 Thread Safe dla Windowsa z włączonymi rozszerzeniami do obsługi połączeń z bazami danych MS SQL Server, kończy się niepowodzeniem. Z tego powodu należy pobrać rozszerzenia wspierane przez Microsoft ze strony SQL Server Driver for PHP 1.1 - October 2009 oraz zainstalować sterownik ODBC z Microsoft SQL Server Native Client. 4.1 Konfiguracja MS SQL Server Aby zewnętrzne aplikacje miały dostęp do bazy danych, należy ustawić sposób autoryzacji na SQL Server Authentication. 1. Włączamy SQL Server Management Studio 2. otwieramy MSSQLSERVER Properties Security 3. zmieniamy Server Authentication na SQL Server and Windows Authentication mode Ustawiamy login i hasła do logowania się, używająć Transact-SQLa 1 ALTER LOGIN sa ENABLE ; GO 2 ALTER LOGIN sa WITH PASSWORD = <mocnehaslotutaj> ; GO lub przez Managment Studio 1. W Object Explorer, rozwijamy Security Logins, PPM na sa i klikamy Properties 2. W General page ustawiamy hasło i potwierdzamy hasło dla loginu sa 3. W Status page, w sekcji Login ustawiamy Enabled i klikamy OK Należy również zezwolić na połączeniea TCP/IP 1. Otwieramy Server Configuration Manager 2. SQL Server Network Configuration Protocols for MSSQLSERVER 3. TCP/IP ustawaimy na Enable (ew. zmieniamy port we właściwościach) 4. następnie w drzewie wchodzimy do SQL Native Client 10.0 Configuration Client Protocols i również TCP/IP ustawiamy na Enable 5. restartujemy serwer Dodatkowo konfigurujemy firewall a 4

1. Start menu Ustawienia Panel sterowania 2. Klikamy Centrum sieci i udostepniania i otwieramy Zapora sytemu Windows 3. następnie Zmien ustawienia Wyjtki Dodaj port... 4. nazwa SQL Serwer, port 1433, protokół TCP i OK Teraz możemy przejść do uruchomienia aplikacji w PHP na zewnetrznym serwerze. 5 Aplikacja PHP Napisana aplikacja w PHP pobiera dane z bazy MS SQL Server 2008 i generuje wykresy z pomocą biblioteki PHPlot. Aplikację można znaleźć w.\examples\phpapp\. 5.1 Zapytania SQL wykorzystane w aplikacji Zapytanie SQL pobierające dane do wygenerowania wykresu tpsa weighted.png(1) 1 SELECT CAST( data AS CHAR( 7 ) ) AS data, avg ( zamnk ) AS avgzamnk, dbo. AVGWeighted ( zamnk, zmiana ) AS avgweight 2 FROM dbo. notowania2 3 WHERE s p o l k i i d = 2 AND data BETWEEN 2009 01 01 AND 2009 12 31 4 GROUP BY CAST( data AS CHAR( 7 ) ) 5 ORDER BY data ASC Zapytanie SQL pobierające dane do wygenerowania wykresu tpsa kroczaca avg geo harm.png(2) 1 SELECT x. data AS xdata, AVG( y. wolumen ) AS vol, dbo.avggeo( y. wolumen ) AS avggeo, dbo. AVGHarm( y. wolumen ) AS avgharm 2 FROM 3 (SELECT ROWNUMBER( ) OVER (ORDER BY data ASC) AS Row, data FROM dbo. notowania2 WHERE s p o l k i i d = 2) AS x, 4 (SELECT ROWNUMBER( ) OVER (ORDER BY data ASC) AS Row, data, wolumen FROM dbo. notowania2 WHERE s p o l k i i d = 2 ) AS y 5 WHERE x. data BETWEEN 2009 01 01 AND 2009 12 31 AND x. Row between y. Row AND y. Row +9 6 GROUP BY x. data 7 ORDER BY x. data ASC 5.2 Wykresy wygenerowane przez aplikację 5

Rysunek 1: Średnia kolumny zamnk oraz średnia ważona kolumny zamnk z wagą zmiana pogrupowane miesiącami, dla akcji TPSA w 2009 roku. Rysunek 2: Średnie kroczące: prosta, geometryczna, harmoniczna z ostatnich 10 próbek, dla akcji TPSA w 2009 roku. 6