change Folder
This commit is contained in:
parent
6bf5c657c4
commit
9e03fd2436
Binary file not shown.
Binary file not shown.
BIN
Anhang/Literatur/InfluxDB_vs_MongoDB.pdf
Normal file
BIN
Anhang/Literatur/InfluxDB_vs_MongoDB.pdf
Normal file
Binary file not shown.
BIN
Anhang/Literatur/Introduction to Jupyter Notebook.pdf
Normal file
BIN
Anhang/Literatur/Introduction to Jupyter Notebook.pdf
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load diff
BIN
Anhang/Literatur/why time series.pdf
Normal file
BIN
Anhang/Literatur/why time series.pdf
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,3 +0,0 @@
|
|||
# FHDW Paderborn Thesis LaTeX Template
|
||||
|
||||
The official LaTeX template for seminar papers, Bachelor and Master theses at FHDW Padeborn.
|
|
@ -1,253 +0,0 @@
|
|||
%!TEX root = ../Thesis.tex
|
||||
\section{Grundlagen}
|
||||
|
||||
\subsection{Verbreitete \gls{DBMS}}
|
||||
|
||||
Aktuell gibt es wie in \cref{fig:db-ranking} zu sehen einige beliebte Mulit-Model Datenbanken die als \gls{TSDB} gentuzt werden können.
|
||||
So können die Datenbanken MongoDB, Redis, Teradata und Couchbase mit Time Series Daten arbeiten. Die erste reine \gls{TSDB} im Ranking ist InfluxDB
|
||||
auf Platz 29.\footnote{\cite[vgl.][]{dbranking}} %ist das eine Quelle die ich nutzen darf?
|
||||
|
||||
\begin{figure}[hbt]
|
||||
\centering
|
||||
\begin{minipage}[t]{0.9\textwidth} % Breite, z.B. 1\textwidth
|
||||
\caption{DB-Engines Ranking} % Überschrift
|
||||
\includegraphics[width=1\textwidth]{img/DB-Engines-Ranking}\\ % Pfad
|
||||
\source{https://db-engines.com/de/ranking?msclkid=4f2a29e5d08811ec95ccd74f8f5146ab} % Quelle
|
||||
\label{fig:db-ranking}
|
||||
\end{minipage}
|
||||
\end{figure}
|
||||
|
||||
- Ranking TSDB\\
|
||||
- Graph InfluxDB vs MySQL
|
||||
|
||||
\subsection{Time Series Data}
|
||||
|
||||
Wie der Name schon sagt ist Time Series Data eine Reihe von Daten die über einen Zeitraum gesammelt wordern sind. Es wird also nicht nur der Endwert aufgezeichnet
|
||||
sonder die Veränderung über einen Zeitraum. Diese Daten können z.B. Servermetriken, Anwendungs Leistungsüberwachung, Netzwerkdaten, Sensordaten,
|
||||
Ereignisse, Klicks, Marktgeschäfte und viele andere Arten von Daten sein. Time Series Data können gut daran erkannt, dass die Zeit eine Wichtige
|
||||
Axe bei der Darstellung der Werte ist.\footnote{\cite[vgl.][]{PaulDix}}
|
||||
|
||||
Manchmal ist es nicht notwendig alle Daten zu erfassen. Zum Beispiel wird in vielen Anwendungen nur der letze Login gespeichert und mehr ist auch für die
|
||||
Funktion nicht notwendig. Allerdings können zusätzliche Informationen gewonnen werden wenn nicht nur die letzen Daten sondern die Veränderung aufgezeichnet werden.
|
||||
So kann zum Beispeil festgestellt werden wie oft und wann sich der Kunde einloggt und ob es dabei ein Muster gibt. Anhand dieser Daten können Kunden dann Kategorisiert werden.\footnote{\cite[vgl.][]{DataScienceTeam2020}}
|
||||
|
||||
Eine besonderheit von Time Series Data ist das sie sich nicht verändert. Wenn die Daten einmal erfasst wurden wird an ihnen nichts mehr geändert.
|
||||
Es werden nur neue Daten hinzugefügt\footnote{\cite[vgl.][]{SamFangman2019}}
|
||||
|
||||
\subsection{{Funktion Time Series Database}}
|
||||
|
||||
\subsection{Notizen}
|
||||
|
||||
sind dabei immer dann sinnvoll wenn Time Series Data gespeichert werden soll.\footnote{\cite[vgl.][]{DataScienceTeam2020}}
|
||||
|
||||
|
||||
Diese Daten zeichnen sich besonders dadurch aus
|
||||
das die Zeit eine wichtiger Faktor für diese Daten ist.
|
||||
|
||||
- Eine Reihe von Daten
|
||||
- Timestamp als wichtiger Wert
|
||||
- Meistens werden nur neue Daten hinzugefügt.
|
||||
- Im vergleich zu einer MySQL Datenbank gibt es nur Inserts und keine Updates
|
||||
- Es wird die Veränderung über die Zeit Aufgezeichnet.- Time SEries Data kann in einer SQL Datenbank gespeichert werden. Diese Datenbanken skalieren aber nur schlecht.
|
||||
|
||||
|
||||
Die Meisten TSDB haben zusätzliche fUNKTIONEN Um mit den Daten zu arbeiten.
|
||||
- alte Daten löschen
|
||||
- durchgehende Abfragen
|
||||
|
||||
Daten:
|
||||
- Server Monitoring
|
||||
- Sensordaten
|
||||
- Wissenschaftliche Daten
|
||||
- Industrielle Daten / Events
|
||||
- Log Data
|
||||
|
||||
- MySQL -> Beim Login wird LastLogin geupdatete
|
||||
- TSDB -> Beim Login wird ein neuer Datenpunkt erstellt.
|
||||
-> Mehr Informationen werden beibehalten. Wie oft eingeloggt. Wann eingeloggt u.s.w.
|
||||
|
||||
- Autos Sammeln 4,000 GB pro Tag
|
||||
|
||||
|
||||
Use Cases
|
||||
- Software Monitoring
|
||||
- Hardware Überwachung
|
||||
- IOT
|
||||
- Wetterdaten
|
||||
- Raumtemperatur
|
||||
- Positionsaufzeichnung von Autos,Containern,Paletten
|
||||
- Eventaufzeichnungen wie Benutzerinteraktion
|
||||
- Business intelligence Überwachen von Kennzahlen
|
||||
- alles weitere wo Zeitrelevante Daten anfallen.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Eine große Menge von Daten ist sehr stark an die Zeit gebunden in der sie erzeugt werden. So sind z.B. Sensordaten
|
||||
sehr eng mit der Aufzeichungszeit verbunden. Weil sich die Werte sofort wieder verändern können.
|
||||
|
||||
|
||||
\subsection{Schrift}
|
||||
\label{sec:schrift}
|
||||
|
||||
\subsubsection{Schriftgrößen}
|
||||
\label{sec:schriftgroessen}
|
||||
\tiny Das ist sehr kleine Schrift\\
|
||||
\small Das ist kleine Schrift\\
|
||||
\normalsize Das ist normale Schrift\\
|
||||
\large Das ist große Schrift\\
|
||||
\Large Das ist größere Schrift\\
|
||||
\LARGE Das ist noch größere Schrift\\
|
||||
\huge Das ist riesige Schrift\\
|
||||
\Huge Das ist noch riesigere Schrift\\
|
||||
\scriptsize Das ist Script Schrift\\
|
||||
\footnotesize Das ist Fußnoten Schrift
|
||||
\normalsize
|
||||
|
||||
\subsubsection{Schrift Typen}
|
||||
\label{sec:Schrift Typen}
|
||||
\textbf{Das ist ein fetter Text}\\
|
||||
\textit{Das ist ein kursiver Text}\\
|
||||
\underline{Das ist ein unterstrichener Text}\\
|
||||
\textsc{Das ist ein kapitälchen Text}\\
|
||||
\textsf{Das ist ein serifenloser Text}\\
|
||||
\texttt{Das ist ein Schreibmaschinen Text}\\
|
||||
\textnormal{Das ist ein normaler Text}
|
||||
|
||||
\subsubsection{Schrift Ausrichtung}
|
||||
\label{sec:Schrift Ausrichtung}
|
||||
\begin{quote}
|
||||
Quote Text (Der gesamte Text innerhalb der Umgebung wird von beiden Seiten eingerückt)
|
||||
\end{quote}
|
||||
\begin{center}
|
||||
Zentrierter Text (Der gesamte Text innerhalb der Umgebung wird zentriert)
|
||||
\end{center}
|
||||
\begin{flushleft}
|
||||
Linksbündiger Text (Der gesamte Text innerhalb der Umgebung wird linksbündig)
|
||||
\end{flushleft}
|
||||
\begin{flushright}
|
||||
Rechtsbündiger Text (Der gesamte Text innerhalb der Umgebung wird rechtsbündig)
|
||||
\end{flushright}
|
||||
In einer Fußnote\footnote{können zusätzliche Ergänzungen, Präzisierungen, Textverweise usw. eingeführt werden.}
|
||||
|
||||
\subsection{Abbildungen}
|
||||
|
||||
In \cref{fig:fhdw} sehen Sie das Logo der FHDW.
|
||||
|
||||
\begin{figure}[hbt]
|
||||
\centering
|
||||
\begin{minipage}[t]{.7\textwidth} % Breite, z.B. 1\textwidth
|
||||
\caption{Das Logo der FHDW} % Überschrift
|
||||
\includegraphics[width=1\textwidth]{img/fhdw}\\ % Pfad
|
||||
\source{Eigene Darstellung} % Quelle
|
||||
\label{fig:fhdw}
|
||||
\end{minipage}
|
||||
\end{figure}
|
||||
|
||||
\subsection{Tabellen}
|
||||
|
||||
In \cref{tab:pin} auf Seite \pageref{tab:pin} sehen Sie die am häufigsten benutzten PINs.
|
||||
|
||||
\begin{table}[hbt]
|
||||
\centering
|
||||
\begin{minipage}[t]{.5\textwidth} % Breite, z.B. 1\textwidth
|
||||
\caption{Die am häufigsten verwendeten PINs} % Überschrift
|
||||
\begin{tabularx}{\columnwidth}{rXrr}
|
||||
\toprule
|
||||
Rank & PIN & Percentage & Accumulated \\
|
||||
\midrule
|
||||
1 & 1234 & 4.34\% & 4.34\%\\
|
||||
2 & 0000 & 2.57\% & 6.91\%\\
|
||||
3 & 2580 & 2.32\% & 9.23\%\\
|
||||
4 & 1111 & 1.60\% & 10.83\%\\
|
||||
5 & 5555 & 0.87\% & 12.70\%\\
|
||||
6 & 5683 & 0.70\% & 12.39\%\\
|
||||
7 & 0852 & 0.60\% & 12.99\%\\
|
||||
8 & 2222 & 0.56\% & 13.55\%\\
|
||||
9 & 1212 & 0.49\% & 14.03\%\\
|
||||
10 & 1998 & 0.43\% & 14.46\%\\
|
||||
\bottomrule
|
||||
\end{tabularx}
|
||||
\source{Eigene Darstellung} % Quelle
|
||||
\label{tab:pin}
|
||||
\end{minipage}
|
||||
\end{table}
|
||||
|
||||
\subsection{Zitate}
|
||||
|
||||
Ein Zitat im Fließtext ist zu sehen bei \citet{Fuller2011}.
|
||||
|
||||
Ein vergleichendes Zitat.\footnote{\cite[vgl.][5\psqq]{Maslennikov2011}}
|
||||
|
||||
Ein \enquote{wörtliches Zitat}\footnote{\cite[13\psq]{Meier2010}}
|
||||
|
||||
Zitat einer Quelle mit mehreren Autoren.\footnote{\cite[vgl.][32\psqq]{Hocking2011a}}
|
||||
|
||||
|
||||
\subsection{Abkürzungen}
|
||||
Bei der ersten Verwendung werden Abkürzungen ausgeschrieben: \gls{AES}.
|
||||
Später wird dann automatisch nur noch die Kurzform benutzt: \gls{AES}
|
||||
|
||||
|
||||
\subsection{Listen}
|
||||
\label{sec:Listen}
|
||||
Eine einfache List mit Punkten:
|
||||
|
||||
\begin{compactitem}
|
||||
\item Punkt 1
|
||||
\item Punkt 2
|
||||
\item Punkt 3
|
||||
\end{compactitem}
|
||||
|
||||
Eine einfache Liste mit Nummern:
|
||||
\begin{compactenum}
|
||||
\item Punkt 1
|
||||
\item Punkt 2
|
||||
\item Punkt 3
|
||||
\end{compactenum}
|
||||
|
||||
Eine einfache Liste mit römischen Nummern:
|
||||
\begin{compactenum}[I.]
|
||||
\item Punkt 1
|
||||
\item Punkt 2
|
||||
\item Punkt 3
|
||||
\end{compactenum}
|
||||
|
||||
Eine einfache Liste mit Buchstaben:
|
||||
\begin{compactenum}[(a)]
|
||||
\item Punkt 1
|
||||
\item Punkt 2
|
||||
\item Punkt 3
|
||||
\end{compactenum}
|
||||
|
||||
\subsection{Quelltext}
|
||||
|
||||
Listing~\ref{list:android} auf Seite~\pageref{list:android} zeigt einigen Quelltext.
|
||||
|
||||
\begin{figure}[bht]
|
||||
\begin{lstlisting}[caption=Scanning for Wi-Fi Access Points on Android, label=list:android]
|
||||
registerReceiver(new RSSIBroadcastReceiver(),
|
||||
new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
|
||||
|
||||
WifiManager wifi = getSystemService(Context.WIFI_SERVICE);
|
||||
wifi.startScan();
|
||||
|
||||
/* not thread safe */
|
||||
public class RSSIBroadcastReceiver extends BroadcastReceiver {
|
||||
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
WifiManager wifi = getSystemService(Context.WIFI_SERVICE);
|
||||
List<ScanResult> scanResults = wifiManager.getScanResults();
|
||||
|
||||
for (ScanResult scanResult : results) {
|
||||
RSSI rssi = new RSSI();
|
||||
rssi.bssi = scanResult.BSSID;
|
||||
rssi.signalLevel = scanResult.level;
|
||||
}
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
%\footnoterule{}
|
||||
%\footnotesize{Casts have been omitted for the sake of readability}
|
||||
\end{figure}
|
|
@ -1,82 +0,0 @@
|
|||
%!TEX root = ../Thesis.tex
|
||||
\section{Installation}
|
||||
\label{instal}
|
||||
|
||||
\subsection{TeX-Distribution}
|
||||
|
||||
Für die Arbeit mit \LaTeX ist eine aktuelle TeX-Distribution erforderlich.
|
||||
|
||||
\subsubsection{Windows}
|
||||
|
||||
Unter Windows ist MiKTeX die Standard-{\LaTeX}-Distribution. Der MikTex-Installer kann unter \url{http://miktex.org/download} heruntergeladen werden.
|
||||
|
||||
\subsubsection{Linux}
|
||||
|
||||
Die Standard-{\LaTeX}-Distribution unter Linux ist Tex Live, welche über die gängigen Software-Repositories installiert werden kann.
|
||||
|
||||
Unter Debian/Ubuntu kann die Installation der erforderlichen Pakete mittels der folgenden Befehlen durchgeführt werden:
|
||||
|
||||
\texttt{sudo apt-get install texlive-latex-base}\\
|
||||
\texttt{sudo apt-get install texlive-latex-recommended}\\
|
||||
\texttt{sudo apt-get install texlive-fonts-recommended}\\
|
||||
\texttt{sudo apt-get install biblatex}\\
|
||||
\texttt{sudo apt-get install biber}
|
||||
|
||||
\subsubsection{Mac-OS}
|
||||
Von der Tex-User-Group wird jährlich ein komplettes aktuelles Mac{\TeX}-Paket angeboten (http://www.tug.org/mactex/index.html), in dem alle relevanten Programme und Pakete enthalten sind.
|
||||
|
||||
\subsection{PDF-Viewer}
|
||||
|
||||
\subsubsection{Windows}
|
||||
|
||||
Als PDF-Viewer unter Windows bietet sich der freie Sumatra PDF Viewer an: \url{http://blog.kowalczyk.info/software/sumatrapdf/download-free-pdf-viewer-de.html}
|
||||
|
||||
\subsubsection{Linux und Mac-OS}
|
||||
|
||||
Die installierten Standard-PDF-Viewer unter Linux bzw. Mac-OS können problemlos genutzt werden.
|
||||
|
||||
\subsection{Hello World}
|
||||
Nach der Installation sollte ein erster Test der Vorlage versucht werden. Dazu öffnen Sie ein Kommandozeilenfenster und wechseln in das Verzeichnis, in dem sich die {\LaTeX}-Quellen dieser Vorlage befinden. Anschließend müssen auf der Kommandozeile die Befehle
|
||||
\begin{lstlisting}
|
||||
biber Thesis
|
||||
pdflatex Thesis
|
||||
\end{lstlisting}
|
||||
eingegeben werden. Nun sollte eine neue Datei \texttt{Thesis.pdf} erzeugt worden sein. Falls nicht, sehen Sie bitte in den Ausgaben nach, die \LaTeX erzeugt hat. Diese sind recht umfangreich, auch wenn ein PDF-Dokument erzeugt werden konnte.
|
||||
|
||||
|
||||
\subsection{Literaturverwaltung}
|
||||
|
||||
Für die Verwaltung von Quellen eignet sich das freie, Cloud-basierte Mendely: \url{http://www.mendeley.com/download-mendeley-desktop/}.
|
||||
|
||||
\begin{figure}[hbt]
|
||||
\centering
|
||||
\begin{minipage}[t]{1\textwidth} % Breite, z.B. 1\textwidth
|
||||
\caption{Mendeley Referenzmanager} % Überschrift
|
||||
\includegraphics[width=1\textwidth]{img/Mendeley-destop-screenshot}\\ % Pfad
|
||||
\source{\url{http://dominique-fleury.com/?p=302}} % Quelle
|
||||
\end{minipage}
|
||||
\end{figure}
|
||||
|
||||
\subsection{Texteditor}
|
||||
|
||||
Als Texteditor für \LaTeX wird Sublime Text (\url{http://www.sublimetext.com}) empfohlen. Zur Arbeit mit Latex ist das Plugin \emph{LaTeXTools} erforderlich (\url{https://github.com/SublimeText/LaTeXTools}).
|
||||
|
||||
\begin{figure}[hbt]
|
||||
\centering
|
||||
\begin{minipage}[t]{1\textwidth} % Breite, z.B. 1\textwidth
|
||||
\caption{Sublime Texteditor} % Überschrift
|
||||
\includegraphics[width=1\textwidth]{img/sublime.png}\\ % Pfad
|
||||
\source{\url{http://www.sublimetext.com/screenshots/alpha_goto_anything2_large.png}} % Quelle
|
||||
\end{minipage}
|
||||
\end{figure}
|
||||
|
||||
\subsection{PDF-Erzeugung}
|
||||
|
||||
Für die Erzeugung des PDF-Dokuments inklusive Referenzen, Quellenverzeichnis und Glossar sind mehrere Programmaufrufe und -durchläufe erforderlich. Der vollständige Aufruf zur PDF-Erzeugung lautet:
|
||||
|
||||
\texttt{pdflatex Thesis}\\
|
||||
\texttt{biber Thesis}\\
|
||||
\texttt{makeindex -s Thesis.ist -t Thesis.alg -o Thesis.acr Thesis.acn}\\
|
||||
\texttt{makeglossaries Thesis}\\
|
||||
\texttt{pdflatex Thesis}\\
|
||||
\texttt{pdflatex Thesis}\\
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
68
importy.py
68
importy.py
|
@ -1,68 +0,0 @@
|
|||
from operator import contains
|
||||
import requests
|
||||
import os
|
||||
import csv
|
||||
import zipfile
|
||||
|
||||
url = 'https://opendata.dwd.de/climate_environment/CDC/observations_germany/climate/10_minutes/air_temperature/now/'
|
||||
download_folder = 'dwd-data/'
|
||||
|
||||
response = requests.get(url)
|
||||
|
||||
#print(response.text)
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
soup = BeautifulSoup(response.text, 'html.parser')
|
||||
|
||||
print(soup.title)
|
||||
|
||||
if not os.path.isdir(download_folder):
|
||||
os.mkdir(download_folder)
|
||||
|
||||
dwd_links = soup.findAll('a')
|
||||
|
||||
i = int(1)
|
||||
dwd_len = len(dwd_links) - 3
|
||||
station_file = ''
|
||||
|
||||
for file_text in dwd_links:
|
||||
dwd_len = len(dwd_links) - 3
|
||||
|
||||
if (str(file_text.text).__contains__('10minutenwerte')):
|
||||
dest_file = download_folder + file_text.text
|
||||
if not os.path.isfile(dest_file):
|
||||
file_url = url + "/" + file_text.text
|
||||
|
||||
download(file_url, dest_file)
|
||||
elif (str(file_text)).__contains__('zehn_now_tu_Beschreibung_Stationen'):
|
||||
dest_file = download_folder + file_text.text
|
||||
file_url = url + "/" + file_text.text
|
||||
download(file_url,dest_file)
|
||||
station_file = dest_file
|
||||
|
||||
|
||||
print("Download ", i," von ",dwd_len, end=' ')
|
||||
i += 1
|
||||
|
||||
def download(url, dest_file):
|
||||
response = requests.get(file_url)
|
||||
open(dest_file, 'wb').write(response.content)
|
||||
|
||||
|
||||
for filename in os.listdir(download_folder):
|
||||
file_path = os.path.join(download_folder, filename)
|
||||
|
||||
zip=zipfile.ZipFile(file_path)
|
||||
f=zip.open(zip.namelist()[0])
|
||||
contents=f.read()
|
||||
print(contents)
|
||||
|
||||
|
||||
|
||||
def read_dwd_file(file_path):
|
||||
with open(file_path) as f:
|
||||
line = f.readline()
|
||||
while line:
|
||||
line = f.readline()
|
||||
print(line)
|
15
test.py
15
test.py
|
@ -1,15 +0,0 @@
|
|||
from datetime import datetime
|
||||
|
||||
from influxdb_client import InfluxDBClient, Point, WritePrecision
|
||||
from influxdb_client.client.write_api import SYNCHRONOUS
|
||||
|
||||
# You can generate an API token from the "API Tokens Tab" in the UI
|
||||
token = "wb4s191jc33JQ4a6wK3ZECwrrG3LuSyQd61akFa_q6ZCEsequUvFhL9Gre6FaZMA2ElCylKz26ByJ6RetkQaGQ=="
|
||||
org = "test-org"
|
||||
bucket = "test"
|
||||
|
||||
with InfluxDBClient(url="http://localhost:8086", token=token, org=org) as client:
|
||||
write_api = client.write_api(write_options=SYNCHRONOUS)
|
||||
data = "mem,host=host1 used_percent=23.43234543"
|
||||
write_api.write(bucket, org, data)
|
||||
client.close()
|
Reference in a new issue