PL233157B1 - Sposób ekstrakcji i transformacji strumieniowych danych pomiarowych wykorzystujący obliczenia równoległe - Google Patents
Sposób ekstrakcji i transformacji strumieniowych danych pomiarowych wykorzystujący obliczenia równoległeInfo
- Publication number
- PL233157B1 PL233157B1 PL423219A PL42321917A PL233157B1 PL 233157 B1 PL233157 B1 PL 233157B1 PL 423219 A PL423219 A PL 423219A PL 42321917 A PL42321917 A PL 42321917A PL 233157 B1 PL233157 B1 PL 233157B1
- Authority
- PL
- Poland
- Prior art keywords
- block
- module
- data
- input
- mask
- Prior art date
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
Opis wynalazku
Przedmiotem wynalazku jest sposób ekstrakcji i transformacji strumieniowych danych pomiarowych wykorzystujący obliczenia równoległe klasy SIMD przeznaczone do wykonywania między innymi w układach GPU (ang. Graphics Processing Unit).
Proces ekstrakcji i transformacji danych zwyczajowo nazywany jest procesem ETL (ang. Extraction, Transformation and Load). Jego zadaniem jest pobranie danych z różnych, heterogenicznych często źródeł, dokonanie na nich szeregu przekształceń, a następnie zapisanie w docelowym formacie w formie jednego spójnego zbioru danych. Proces ETL najczęściej wykorzystywany jest w systemach hurtowni danych jako źródło danych.
Przykładowym zastosowaniem procesu ekstrakcji i transformacji danych pomiarowych jest wyznaczanie rekoncyliacji danych paliwowych pochodzących ze stacji paliw.
Celem powyższej operacji jest obliczenie wartości bilansu pomiędzy kolejnymi pomiarami objętości paliwa wypompowanego ze zbiornika paliwa a objętościami paliwa sprzedanego za pośrednictwem dystrybutorów paliwa.
Dotychczas, proces ETL odbywał się w porach niskiego obciążenia hurtowni danych, przykładowo podczas nocy. Wiąże się to z dwoma konsekwencjami - po pierwsze podczas ładowania danych (działania procesu ETL) hurtownia danych jest nieaktywna, tzn. nie można z niej korzystać, a po drugie w momencie korzystania z hurtowni danych użytkownicy operują na obrazie danych od momentu ostatniej aktualizacji, tj. nie widzą nowych danych, aż do czasu kolejnej aktualizacji.
Dotychczas, w ramach działania procesu ETL wykorzystywało się normalne przetwarzanie danych, tj. rekord po rekordzie. Ponadto, zazwyczaj dokonywanie przekształceń na danych wykonywane było na normalnym procesorze, nie procesorze graficznym.
Celem wynalazku jest opracowanie sposobu ekstrakcji i transformacji strumieniowych danych pomiarowych wykorzystującego obliczenia równoległe klasy SIMD przeznaczone do wykonywania między innymi na układach GPU, stosując do tego celu organizowanie danych pomiarowych w bloki oraz grupowanie rekordów w ramach poszczególnych bloków zgodnie z wartością identyfikatora źródła, w celu ułatwienia i przyspieszenia wykonywania przekształceń na danych, dzięki przechowywaniu danych pochodzących z pojedynczego źródła w jednym, spójnym obszarze pamięci. Ponadto, proponowane rozwiązanie jest przeznaczone do pracy w trybie online, tzn. podczas normalnego funkcjonowania hurtowni danych.
Sposób ekstrakcji i transformacji strumieniowych danych pomiarowych wykorzystujący obliczenia równoległe polega na tym, że w module formowania bloków formuje się wejściowe dane pomiarowe w bloki danych, następnie poddaje się je operacji wyznaczania statystyk wstępnych w module statystyk wstępnych i otrzymuje się: tablicę liczebności, tablicę pozycji oraz tablicę indeksów, z których korzysta moduł grupowania wykorzystujący blok danych, w wyniku jego działania powstaje pogrupowany blok danych, który jest przekazywany na wejście modułu transpozycji, który produkuje transponowany blok pogrupowanych danych stanowiący wejście dla modułu różnicy, w wyniku którego powstaje blok różnic wykorzystywany przez moduł generowania maski ID oraz moduł generowania maski czasu, na których wyjściach powstają odpowiednio: blok maski ID oraz blok maski czasu, które są podawane na wejście modułu iloczynu, który produkuje blok maski wykorzystywany przez moduł nakładania maski, wykorzystujący dodatkowo blok różnic do wytworzenia bloku podzielonych danych, który stanowi wejście dla modułu sumującego, w wyniku działania którego powstaje blok przedziałów, wykorzystywany przez moduł rekoncyliacji, produkujący blok przedziałów rekoncyliacji stanowiący wejście dla modułu filtracji, na którego wyjściu powstaje blok przefiltrowanych danych wykorzystywany przez moduł wykrywania trendów, produkujący blok trendów, który podawany jest na wejście modułu zapisu, po czym zapisuje dane do bazy danych.
Zaletą rozwiązania według wynalazku jest wykorzystywanie modelu równoległości SIMD przeznaczonego do implementacji między innymi w układach GPU.
Przedmiot wynalazku został objaśniony w przykładzie wykonania na rysunku, który przedstawia schemat sposobu ekstrakcji i transformacji strumieniowych danych pomiarowych wykorzystujący obliczenia równoległe.
Sposób ekstrakcji i transformacji strumieniowych danych pomiarowych wykorzystujący obliczenia równoległe wykorzystuje dane pomiarowe (1) pochodzących z sieci czujników rejestrujących różne parametry świata rzeczywistego. Dane te zorganizowane są w formie rekordów, z których każdy składa
PL 233 157 B1 się ze znacznika czasowego, identyfikatora źródła (ID) oraz zbioru atrybutów niosących wartości poszczególnych pomiarów. Ponadto, dane te są posortowane zgodnie ze znacznikami czasowymi w porządku niemalejącym (w taki sam sposób, w jaki są generowane). Oznacza to jednak, że nie są one pogrupowane zgodnie z wartościami identyfikatorów źródeł, co wpływa negatywnie na szybkość przetwarzania danych, ze względu na konieczność częstej zmiany kontekstu i odwoływania się do danych znajdujących się w różnych obszarach pamięci. Na wstępie dane pomiarowe (1) są formowane w bloki danych (3) w module formowania bloków (2). Rozmiar każdego bloku jest wyznaczany na podstawie jego rozpiętości czasowej, wyznaczanej na podstawie znaczników czasowych poszczególnych rekordów wchodzących w jego skład. Blok danych (3) stanowi podstawę do wyznaczenia statystyk wstępnych, co ma miejsce w module statystyk wstępnych (4). Statystyki te to kolejno: tablica liczebności (5), tablica pozycji (6) oraz tablica indeksów (7). Tablica liczebności (5) zawiera tyle elementów, ile występuje różnych wartości ID w danych, a jej elementy to liczby rekordów o odpowiadającej wartości ID. Tablica pozycji (6) zawiera tyle elementów, ile rekordów znajduje się w bloku danych (3), a jej elementy to kolejne wartości liczników wystąpień konkretnych wartości ID na kolejnych pozycjach w bloku danych (3). Tablica indeksów (7) zawiera tyle elementów, ile występuje różnych wartości ID w danych, a jej elementy to początkowe elementy w docelowym, tj. pogrupowanym bloku danych (9). Na podstawie tych trzech statystyk, za pośrednictwem modułu grupowania (8), wykorzystującego dodatkowo blok danych (3) powstaje pogrupowany blok danych (9), zgodnie ze wzorem:
i' = I[id] + P[i] D’[i’] = D[i] gdzie: I - tablica indeksów, P - tablica pozycji, D - blok danych przed operacją grupowania, D - pogrupowany blok danych, i - indeks rekordu w bloku danych przed operacją grupowania, i’ indeks rekordu w pogrupowanym bloku danych, id - wartość ID otrzymana z danego rekordu. Rekordy składające się na niego są pogrupowane względem wartości identyfikatora źródła, z którego pochodzą, przy czym zachowany jest porządek niemalejący znaczników czasowych w obrębie każdej grupy. Pogrupowany blok danych (9) podawany jest na wejście modułu transpozycji (10), które zadaniem jest odwrócenie zapisu - z wierszowego na kolumnowy (analogicznie jak w przypadku wykonywania operacji transpozycji macierzy). Dzięki temu wartości poszczególnych atrybutów kolejnych rekordów znajdują się w jednym spójnym obszarze pamięci, co wpływa pozytywnie na łatwość i szybkość wykonywania na nich obliczeń. W wyniku powstaje transponowany blok pogrupowanych danych (11), który stanowi wejście dla modułu różnicy (12). Jego zadaniem jest obliczenie różnic pomiędzy kolejnymi wartościami pomiarów (pochodna dyskretna). Kolejne wartości różnic formują się w blok różnic (13), który stanowi podstawę do obliczenia dwóch masek. Odbywa się to odpowiednio w module generowania maski ID (14) oraz module generowania maski czasu (15). W rezultacie otrzymywane są kpłejno: blok maski ID (16) oraz blok maski czasu (17). Maski te są macierzami o liczbie kolumn równej liczbie rekordów w bloku różnic (13) i liczbie wierszy równej liczbie różnych wartości ID (w przypadku maski ID) lub liczbie przedziałów czasowych (w przypadku maski czasu). Zawierają one wartość 1 na pozycjach odpowiadających rekordom danej wartości ID lub rekordom o znacznikach czasowych należących do danego przedziału czasowego. Na pozostałych pozycjach znajdują się wartości 0. Maski te podawane są na wejście modułu iloczynu (18), którego zadaniem jest obliczenie iloczynu logicznego pomiędzy elementami obu masek. W wyniku powstaje blok maski (19), który jest macierzą o liczbie kolumn równej liczbie rekordów w bloku różnic (13) a liczbie wierszy równej liczbie kombinacji wszystkich wierszy obu masek. Na pozycjach bloku maski (19) odpowiadających rekordom w bloku różnic (13), które powinny być przetwarzane razem (o danej wartości ID należące do pojedynczego przedziału czasowego) znajdują się wartości 1, a na pozostałych - wartości 0. Blok maski (19) wykorzystywany jest przez moduł nakładania maski (20), który dodatkowo wykorzystuje blok różnic (13). Zadaniem modułu nakładania maski (20) jest wykonanie iloczynu arytmetycznego pomiędzy elementami maski, a elementami bloku różnic (13). W wyniku powstaje blok podzielonych danych (21), który jest macierzą o liczbie kolumn równej liczbie rekordów w bloku różnic (13), a liczbie wierszy równej liczbie wierszy bloku maski (19). W każdym wierszu bloku podzielonych danych (21) znajdują się tylko te elementy, które powinny być przetworzone razem (o danej wartości ID i należące do pojedynczego przedziału czasowego), pozostałe elementy tego bloku mają wartość 0 (co stanowi zarazem element neutralny operacji dodawania). Blok podzielonych danych (21) stanowi wejście dla modułu sumującego (22), którego zadaniem jest zsumowanie bloku podzielonych danych (21) wierszami. W wyniku powstaje blok przedziałów (23), który jest wektorem o liczbie elementów równej liczbie kombinacji wartości ID i przedziałów czasowych. Blok przedziałów (23) stanowi wejście dla modułu rekoncyliacji (24), którego zadaniem jest przeprowadzenie operacji
PL 233 157 B1 rekoncyliacji (bilansowania), na danych pochodzących ze zbiorników paliwa oraz dystrybutorów paliwa. Oblicza on wartość różnicy (bilansu) pomiędzy odpowiadającym sobie wartościom pochodzącym z obu odpowiadających sobie źródeł (o tej samej wartości ID, ale z różnych typów urządzeń) i należących do tego samego przedziału czasowego. W wyniku powstaje blok przedziałów rekoncyliacji (25), który jest wektorem o liczbie elementów równej liczbie elementów bloku przedziałów (23). Blok przedziałów rekoncyliacji (25) jest podawany na wejście modułu filtracji (26), który jest odpowiedzialny za przeprowadzenie operacji filtrowania danych. Na jego wyjściu powstaje blok przefiltrowanych danych (27), który stanowi podstawę do dalszej analizy danych, która przeprowadzana jest w module wykrywania trendów (28). W wyniku powstaje blok trendów (29), który zawiera informacje o znalezionych w danych trendach, które posłużą w dalszej kolejności do wykrywania różnego rodzaju anomalii i innych zjawisk niepożądanych, które są przedmiotem zaawansowanej analizy, przeprowadzanej poza opisywanym tutaj procesem ekstrakcji i transformacji danych pomiarowych. Blok trendów (29) wykorzystywany jest przez moduł zapisu (30), który dokonuje operacji zapisu danych do bazy danych (31).
Grupowanie rekordów w ramach poszczególnych bloków zgodnie z wartością identyfikatora źródła wykorzystuje się do ułatwienia i przyśpieszenia wykonywania przekształceń danych, dzięki przechowywaniu danych pochodzących z pojedynczego źródła w jednym spójnym obszarze pamięci.
Claims (1)
- Zastrzeżenie patentowe1. Sposób ekstrakcji i transformacji strumieniowych danych pomiarowych wykorzystujący obliczenia równoległe znamienny tym, że w module formowania bloków (2) formuje się wejściowe dane pomiarowe (1) w bloki danych (3), następnie poddaje się je operacji wyznaczania statystyk wstępnych w module statystyk wstępnych (4) i otrzymuje się: tablicę liczebności (5), tablicę pozycji (6) oraz tablicę indeksów (7), z których korzysta moduł grupowania (8) wykorzystujący blok danych (3), w wyniku jego działania powstaje pogrupowany blok danych (9), który jest przekazywany na wejście modułu transpozycji (10), który produkuje transponowany blok pogrupowanych danych (11) stanowiący wejście dla modułu różnicy (12), w wyniku którego powstaje blok różnic (13), wykorzystywany przez moduł generowania maski ID (14) oraz moduł generowania maski czasu (15), na których wyjściach powstają odpowiednio: blok maski ID (16) oraz blok maski czasu (17), które są podawane na wejście modułu iloczynu (18), który produkuje blok maski (19) wykorzystywany przez moduł nakładania maski (20), wykorzystujący dodatkowo blok różnic (13) do wytworzenia bloku podzielonych danych (21), który stanowi wejście dla modułu sumującego (22), w wyniku działania którego powstaje blok przedziałów (23), wykorzystywany przez moduł rekoncyliacji (24), produkujący blok przedziałów rekoncyliacji (25) stanowiący wejście dla modułu filtracji (26), na którego wyjściu powstaje blok przefiltrowanych danych (27) wykorzystywany przez moduł wykrywania trendów (28), produkujący blok trendów (29), który podawany jest na wejście modułu zapisu (30), po czym zapisuje dane do bazy danych (31).
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PL423219A PL233157B1 (pl) | 2017-10-20 | 2017-10-20 | Sposób ekstrakcji i transformacji strumieniowych danych pomiarowych wykorzystujący obliczenia równoległe |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PL423219A PL233157B1 (pl) | 2017-10-20 | 2017-10-20 | Sposób ekstrakcji i transformacji strumieniowych danych pomiarowych wykorzystujący obliczenia równoległe |
Publications (2)
Publication Number | Publication Date |
---|---|
PL423219A1 PL423219A1 (pl) | 2019-04-23 |
PL233157B1 true PL233157B1 (pl) | 2019-09-30 |
Family
ID=66167918
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PL423219A PL233157B1 (pl) | 2017-10-20 | 2017-10-20 | Sposób ekstrakcji i transformacji strumieniowych danych pomiarowych wykorzystujący obliczenia równoległe |
Country Status (1)
Country | Link |
---|---|
PL (1) | PL233157B1 (pl) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101587477B (zh) * | 2008-05-23 | 2012-10-31 | 阿里巴巴集团控股有限公司 | Etl模块自动维护方法及*** |
CN101533407B (zh) * | 2009-04-10 | 2010-09-29 | 中国科学院软件研究所 | 一种etl流程中异常数据检测方法 |
US20170220654A1 (en) * | 2016-02-03 | 2017-08-03 | Wipro Limited | Method for automatically generating extract transform load (etl) codes using a code generation device |
CN105930384A (zh) * | 2016-04-14 | 2016-09-07 | 南京理工大学 | 基于Hadoop体系的传感云数据存储***及其实现方法 |
CN107169023A (zh) * | 2017-04-07 | 2017-09-15 | 广东精点数据科技股份有限公司 | 基于sql语义自动解析的数据血统分析***及方法 |
-
2017
- 2017-10-20 PL PL423219A patent/PL233157B1/pl unknown
Also Published As
Publication number | Publication date |
---|---|
PL423219A1 (pl) | 2019-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101719275B (zh) | 图像特征点提取和实现方法、图像拷贝检测方法及其*** | |
Carrea et al. | Automatic rockfalls volume estimation based on terrestrial laser scanning data | |
CN108170639A (zh) | 基于分布式环境的张量cp分解实现方法 | |
CN110516316B (zh) | 一种间断伽辽金法求解欧拉方程的gpu加速方法 | |
CN105957068B (zh) | 构建三维重建模型表面的方法和*** | |
JP5898584B2 (ja) | 六面体メッシュ生成装置 | |
Zhao et al. | Sflu: Synchronization-free sparse lu factorization for fast circuit simulation on gpus | |
Andrzejewski et al. | Parallel gpu-based plane-sweep algorithm for construction of icpi-trees | |
CN104572588A (zh) | 矩阵求逆处理方法和装置 | |
PL233157B1 (pl) | Sposób ekstrakcji i transformacji strumieniowych danych pomiarowych wykorzystujący obliczenia równoległe | |
CN104598600B (zh) | 一种基于分布式内存的并行数字地形分析优化方法 | |
CN105868402A (zh) | 面向飞机维修品质分析的qar数据预处理方法及其装置 | |
Chatterjee et al. | Data structures and algorithms for counting problems on graphs using gpu | |
CN102799750A (zh) | 几何体表面三角形剖分的公共边和非公共边快速生成方法 | |
Hemani et al. | Voxel based parallel post processor for void nucleation and growth analysis of atomistic simulations of material fracture | |
Hafstein | Efficient Algorithms for Simplicial Complexes Used in the Computation of Lyapunov Functions for Nonlinear Systems. | |
CN111160385B (zh) | 海量位置点聚合的方法、装置、设备及存储介质 | |
CN110907960B (zh) | 基于K-Means动态聚类分析的周跳探测方法及装置 | |
Bayomie et al. | Analyzing Manufacturing Process By Enabling Process Mining on Sensor Data. | |
Fehling | Algorithms for massively parallel generic hp-adaptive finite element methods | |
CN113986727B (zh) | 基于热力图的函数覆盖率检测方法、***、终端及介质 | |
CN103679815A (zh) | 基于表面搜索的可视外壳生成方法及装置 | |
Zhang et al. | Spark-Enabled XDraw Viewshed Analysis | |
von Rüden et al. | Separating the wheat from the chaff: Identifying relevant and similar performance data with visual analytics | |
Scicluna et al. | Fpga-based parallel dbscan architecture |