From 888c74e482b6b7cf89d2a6f87f2b7647f7845c53 Mon Sep 17 00:00:00 2001 From: Henrik Mertens Date: Wed, 29 Jun 2022 17:06:39 +0200 Subject: [PATCH] Rechtschreibkorrektur --- Anhang/Docker/data/jupyLab/Grundlagen.ipynb | 2 +- .../data/jupyLab/Wetterdaten-Import.ipynb | 72 +++++++++++------- arbeit/Thesis.pdf | Bin 1488101 -> 1488235 bytes arbeit/Thesis.synctex(busy) | 0 arbeit/Thesis.tex | 2 +- arbeit/chapter/Einleitung.tex | 2 +- arbeit/chapter/Grundlagen.tex | 14 ++-- arbeit/chapter/InfluxDB.tex | 53 +++++++------ arbeit/chapter/Zusammenfassung.tex | 2 +- 9 files changed, 83 insertions(+), 64 deletions(-) delete mode 100644 arbeit/Thesis.synctex(busy) diff --git a/Anhang/Docker/data/jupyLab/Grundlagen.ipynb b/Anhang/Docker/data/jupyLab/Grundlagen.ipynb index 19afb51..44f4808 100644 --- a/Anhang/Docker/data/jupyLab/Grundlagen.ipynb +++ b/Anhang/Docker/data/jupyLab/Grundlagen.ipynb @@ -35,7 +35,7 @@ "metadata": {}, "source": [ "Im nächsten Schritt müssen die Verbindungsdaten angegeben werden. Ein API Token kann im InfluxDB Webinterface angelegt werden. Der Bucket wird automatisch erstellt. Es kann allerdings auch ein eigener Bucket verwendet werden.\n", - "Als URL muss darauf geachtet werden, die URL des Doker Containers zu nutzen, in dem die Datenbank ausgeführt wird. " + "Als URL muss darauf geachtet werden, die URL des Docker Containers zu nutzen, in dem die Datenbank ausgeführt wird. " ] }, { diff --git a/Anhang/Docker/data/jupyLab/Wetterdaten-Import.ipynb b/Anhang/Docker/data/jupyLab/Wetterdaten-Import.ipynb index d769b19..b1be8c1 100644 --- a/Anhang/Docker/data/jupyLab/Wetterdaten-Import.ipynb +++ b/Anhang/Docker/data/jupyLab/Wetterdaten-Import.ipynb @@ -23,13 +23,13 @@ "id": "7abd6877-b35f-4604-ba57-399234b97281", "metadata": {}, "source": [ - "Als erstes werden Vorbereitungen dafür getroffen, die Daten zu importieren. Dazu werden die benötigten Bibliotehken importiert und einige Variablen gesetzt.\n", + "Als erstes werden Vorbereitungen dafür getroffen, die Daten zu importieren. Dazu werden die benötigten Bibliotheken importiert und einige Variablen gesetzt.\n", "Außerdem wird ein Ordner angelget, in dem die heruntergeladenen Daten gespeichert werden können." ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 9, "id": "c87fe05a-63e3-4748-a01a-d46cb12e9b05", "metadata": { "tags": [] @@ -82,7 +82,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 10, "id": "b9acf473-2f26-40c6-9c48-1a4ec159bd3d", "metadata": {}, "outputs": [ @@ -121,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 11, "id": "90f1eb08-b4dd-4743-ad38-492bfd742fec", "metadata": {}, "outputs": [ @@ -154,12 +154,12 @@ "id": "ac3c644a-cac2-41b5-9be0-f01bcb9a40cc", "metadata": {}, "source": [ - "Die so gefilterten Links werden dann in dieser Schleife heruntergeladen und gespeichert. Der Pfad für die Stationsbeschreibungsdatei wird in eine extra Variable geschrieben, um später die Daten der Stationen zu bekommen." + "Die so gefilterten Links werden dann in dieser Schleife heruntergeladen und gespeichert. Der Pfad für die Stationsbeschreibungsdatei wird in eine extra Variable geschrieben, um später an die Daten der Stationen zu gelangen." ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 12, "id": "2524986b-9c26-42d5-8d76-f4e228d0eb48", "metadata": { "tags": [] @@ -207,14 +207,14 @@ "id": "14b90ff2-1473-4e44-9c6b-fdd2d6c20773", "metadata": {}, "source": [ - "Zunächst werden die Wetterstationen in die Klasse Station eingelesen. Aus den Klassen wird ein Dictionary erstellt, in welchem mittels der Stations_id gesucht werden kann. Weil die Stationsdaten nicht als CSV gespeichert sind, musste eine eigene Technik entwickelt werden, um die Daten auszulesen.\n", + "Zunächst werden die Wetterstationen in die Klasse Station eingelesen. Aus den Klassen wird ein dictionary erstellt, in welchem mittels der \"Stations_id\" gesucht werden kann. Weil die Stationsdaten nicht als CSV gespeichert sind, musste eine eigene Technik entwickelt werden, um die Daten auszulesen.\n", "\n", "Als erstes wird so lange gelesen bis kein Leerzeichen mehr erkannt wird. Danach wird gelesen bis wieder ein Leerzeichen erkannt wird. Dadurch können die Felder nacheinander eingelesen werden. " ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 13, "id": "430041d7-21fa-47d8-8df9-7933a8749f82", "metadata": {}, "outputs": [ @@ -230,7 +230,7 @@ "source": [ "\n", "class Station:\n", - " def __init__(self, Stations_id, Stationshoehe,geoBreite, geoLaenge, Stationsname, Bundesland):\n", + " def __init__(self, Stations_id, Stationshoehe, geoBreite, geoLaenge, Stationsname, Bundesland):\n", " self.Stations_id = Stations_id\n", " self.Stationshoehe = Stationshoehe\n", " self.geoBreite = geoBreite\n", @@ -240,7 +240,7 @@ "\n", "def read_station_file():\n", " \n", - " def get_value(i,line, empty_spaces):\n", + " def get_value(i, line, empty_spaces):\n", " value = \"\"\n", " while(line[i] == ' '):\n", " i += 1\n", @@ -309,16 +309,24 @@ "id": "81bbb42e-3bd9-4b29-a6e3-11e1d1593307", "metadata": {}, "source": [ - "Um an die Messwerte in den Dateien zu kommen, müssen diese entpackt werden. \n", - "Das kann einige Zeit in Anspruch nehmen. Es wird immer die Station angezeigt, die gerade importiert wird." + "Um an die Messwerte in den Dateien zu gelangen, müssen diese entpackt werden. \n", + "Dies kann einige Zeit in Anspruch nehmen. Es wird immer die Station angezeigt, die gerade importiert wird." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "id": "27966795-ee46-4af1-b63c-0f728333ec79", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Import durchgeführt \r" + ] + } + ], "source": [ "def import_data(df):\n", " client = InfluxDBClient(url=influx_url, token=token, org=org)\n", @@ -408,12 +416,12 @@ "id": "dacfcc8e-a74b-4067-8f55-ac4063294dec", "metadata": {}, "source": [ - "Als erstes müssen die Daten der letzen 24 Stunden aus der Datenbank abgerufen werden. Dazu wird mithilfe des Query Clients ein Flux Query ausgeführt, der nach den gewünschten Daten filtert." + "Als erstes müssen die Daten der letzten 24 Stunden aus der Datenbank abgerufen werden. Dazu wird mithilfe des Query Clients ein Flux Query ausgeführt, der nach den gewünschten Daten filtert." ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 15, "id": "a3e48dfa-eeca-4a3c-a8c7-7b65c223b6c6", "metadata": {}, "outputs": [], @@ -433,7 +441,7 @@ "id": "711e5ab4-c5c0-4e03-bc49-fd2f2d0946ed", "metadata": {}, "source": [ - "Als nächstes werden einige Variablen definiert um den Höchst- und Tiefstwert zu erhalten.\n", + "Als nächstes werden einige Variablen definiert, um den Höchst- und Tiefstwert zu erhalten.\n", "Für den Höchstwert nehmen wir standardmäßig einen sehr niedrigen und für den Tiefstwert einen sehr hohen Wert.\n", "\n", "Außerdem wird für den Durschnittswert ein Zähler und eine Summen Variable definiert." @@ -441,7 +449,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "id": "053593fb-1fad-4280-b519-a163b89daa7f", "metadata": {}, "outputs": [], @@ -455,7 +463,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 17, "id": "94441229-f809-4942-908f-9c0397461245", "metadata": {}, "outputs": [ @@ -463,8 +471,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Der Tageshöchstwert der letzen 24h liegt bei: 18.9\n", - "Der Tagestiefstwert der letzen 24h liegt bei: 15.4\n" + "Der Tageshöchstwert der letzen 24h liegt bei: -254\n", + "Der Tagestiefstwert der letzen 24h liegt bei: 254\n" ] } ], @@ -488,15 +496,27 @@ "id": "8a9d2fd8-08ac-4b32-83b0-df03285dda93", "metadata": {}, "source": [ - "Um den Durchschnittswert auszurechnen, muss nur noch die Summe aller Werte, also die Variable sum, durch die Anzahl der Werte i geteilt werden." + "Um den Durchschnittswert auszurechnen, muss nur noch die Summe aller Werte, also die Variable sum, durch die Anzahl der Werte \"i\" geteilt werden." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "id": "6cf90047-ba7b-42fc-b012-aa9647d60191", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "ZeroDivisionError", + "evalue": "division by zero", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [18]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m average \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43msum\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m/\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mi\u001b[49m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDie Durchschnittstemperatur der letzten 24h liegt bei: \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m+\u001b[39m \u001b[38;5;28mstr\u001b[39m(average))\n", + "\u001b[0;31mZeroDivisionError\u001b[0m: division by zero" + ] + } + ], "source": [ "average = sum / i\n", "print(\"Die Durchschnittstemperatur der letzten 24h liegt bei: \"+ str(average))" @@ -520,7 +540,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "4cf4e14f-37f7-4d67-98dd-55c53a5235d7", "metadata": {}, "outputs": [], @@ -544,7 +564,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "6fd12713-48ed-4624-8436-b3f3e23d7612", "metadata": {}, "outputs": [], diff --git a/arbeit/Thesis.pdf b/arbeit/Thesis.pdf index 3c4723b59eac187e90aa9414b38ec8c8d1226365..ba2fa67b617ed4bc5c25c81ae17901928af0b693 100644 GIT binary patch delta 61211 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

FlHV(o_&7{`mONQ5;JimNUIqU~nt5^%vup#H}b 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 delta 61133 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

#iU4edowPh%j1&q5hP~%4 zk*|q{g}n<)kIDce99bgzv@lhJC~PnPZlFs!pkFfX zPCp7I8m1zpZ5K3K)cjNjb-X(uaSV6hej(I4rFA}asu(3FcKYZObp3DhZ? z=ehA}9yA9F^1yRfhSOpZg?Bw2kaRx;$+FDRsGPZ%z6nlflRAxn!01Gi`l_rq2~y=! z^oLvO+QQ#2`Y?Zf{z+ z>A?wi`k8|#9wRh@Y?dY(WyjCkb@VqRhyv1+ON;nv2jprXhsBkcJPZarKn7W@hVIky zGYln@rv7cOUDWUF@^sbVXIjfbUs zv~ZD=2uaTnrr}Q9?i^PaqrM4~Y)|RLmumwrMxLZ~*)d3HFSO+KCbYzUR-mm8`p`|1 z?{nbMIYJI-oaxqa=!1z8K-dfVCgi|L=5rQ+4?=ckunG1}SIJKuma-uCIpe6JU zR%oyTp2f^^>M!IQj^JC;z$&qdg#q!I9%FdrL)5r%7A6&F&|_aT-~xB&)-j_oX}h;C zy%ves2tzZ4wA#dK*85{U9`A3#Zh9?17Lp10%j!Z$R%M5n9j6@zE&xU9f(N6-oEsEUi|fYWf9WwU}-k*2!-wix`e6km_wY9I<;7d z2Ak}80VyMhKDLb!U^&llEQO1q5c0{m2l1d)X28v z2Sq|C^_WHxnn-jy_^xQ{Nz{`kniLumwNrCA_9rQp3jwr#&JC_6?c-G*lrJjGT8vfU zd195M`pxgznIF=QCE-?%-?tREC#K{>IMVtLwS5u>6T6cmfN$s>Gbl~hfn}xC#CwAE z2+F*0tDTlP?Vb8}UMn7yd@7z8R6v+-4#)9iA3|Q`>35Zn_az~3(5{R&75Y)#qn@{c z4rqQt+cn|^cZPvz;1dqdsEhSSPS48+aaC)2uO-2II)njhb7{)GL(-zin-Wvz#@ckT z`Y~=*MyeMXU@ND>28*BQ=Cz*7}GvK@4g?uH;HdXZvk1ok;lU1 z_tfPTY{A!SZg9vWgg-!z!z(COHR-4p0<3}T25ym-%3P$#U;c_iY-m}IIkJY$rh|4< zlHH)UL*@TQ)K|6n!E{cSuwYhbAFhrvwr7__e*4;^2A`SUeA}s6mLF8GC;=u8hPV{z zkM*D^c?52H$5Nhi{ZaxxB_@^LOXy^d`yuD*c<>(syyh5RFa*SbzChVl}T_ z?dJx!UW?V2gJTvG6Y_Aj*}aKW1YBvKbQsAl#L85pT}WiuZtf0`#4lVv3++7J2iLxw&w`C3h1k_xS=92msUjaw(T?j?SO$7ExV2ODHYLQLVI?iuoa11jad=t`6^9Z*6TCBcLIosl zO?Q;MWSYto{{mqa(WDvJrb{+;YiHvpD9}$0NvPMqD`xz&k={_yd%%CIq%DO`5AjHKO=nA2^ZD0z4imFrkK!6hrSa zYpZOP#=yw<_L113_%+>mj$L7ljMyXx_<{>Pltj49`qYZ4vJfT9urY0F1!X@5!5w-a zZQ`Y_Bm*Fe{4Vw&xS;jl%6MZDOL}ksw?3jgUV;gynURkmJn zDMvp@LPtb1>a;t(lXu&#Y850AJu%>+ev8a|a=+AEf8m67;Mn)1>s*meBK=Szb5jT{ z)HJA$=~JuRLfXrmIds)-BY<3fFaw=fXghbt9hT7P_!QO99;yh;EwN4{-|faIr7te^ z$!9fKzMYtde$(FdL(c zeo^HYW_%!s2(UFDdy-%hcu;gfV3eXGd}YmrU1*r~GuK?sjc?ldG9pmm1yW+YaYwrh zMuH2W+>ED5oM?$~)DxS&iExfar|jEXb4{$fQgZ=rZu{0LqJ_35P;%?9#fByBT8LKH z(x!0L8*}>Ju!t|#Ho!OKwrigq#SX`rvYQ3y27;*}--$mJN;p(IJ zefjWTtm@UF4xkh3f58wBk?>A?+H}aC@eeddJ0FVna#WAR7`MAKngec)0r;R0G(}HW zjUi}}Uz1s$NR{ogw)vuvv!a4i;l!=67`CQRF*KjERr$-|pm{DZh%LuB%14X7Gos8G z1eqS5c*P7gi-3ipgF`UH$1S4yvp0%zht@CVV-bFNALWl2t57b>gvYF0Dq?Rm=jL2` zqQuC;8`s-pXApjB!!@@VHBl891~qTQtwnhB=AO?xE<7(fXbVSpTVAc8jaWoUH7DR2 z#8&i-8N-j{AqahjVT)?zc_o7<*`izD)~tX z+2dgRSQ36XbevC?17>eP@v-z5Th4<+xhC~@FGkMJATDDA*II|F(@ja`v74Z?XJ&#m zZm$RNzSu&g`{NmK^Ci1#MrWA9$L1ZooJRnaYwi928muwcx&D_j%$+)m3qqIr;s?S4 z0)&xD>kr}#*jW=B4lANEY>lmE6wrrKSD9P_XE#fsO2<*<%&HP6VG&)=7-EqV|FqUX zbOE%ufBHWCAGY2BIMOZZ8jfw- zwr$&(Oq_{rCmq}B*tU&{Cbn&BCdMTBbMO7?`|GRst?JWN{p_yO{p`KZKGmn!S{rXF z#*|FLyO|njqzuKHh`V+dAnLvq+lqC_VURXF*ju{$h8*LD2f$Z73K0^De@ARL^~~n- z7I+rS|1O``v*F$>j01p5zBz?jX|aFCe~gPm4CE9+dxJH_F|)da{1sRC`;{r!&cd4>rxR9S>1arF<9IvU7{&-&H)7wY`u1}{ z;1_{L1>cI8rR6odC`fDKV|(88*tg z;tu1-iBp24iJP3(;;w#C^ezj4@N{R-?#}DhS(`t1*DQ($9KO(^I_gtwUo@0IJd4A! znb%b@@)44kSOGBPHlgmNcbBBh1df%1?`$5LAWP-kxPM-ckFOM;^v-i47R6qjOUgjE@3mnCxb>PRp3%oEwowYnh6^Q8MJ75M~B0XBQy)5xtTCGa0k$j9Ega+!%DF zyA)gG+vScDoV(aX7oKE(k$ZrBvaMXoNtlvH+hrIL0Ii$_@0T3uaCJ{X%bmV z#!kK(DhJ^A<(Bttd8}~CmVLQzr$}cJK6kD^3&^&t1|JKJ^zy?|{0MLhWtJO0D+l3e zQXicN;GKo3nudYPLm)atCyw;`mkXDK!=iOQlOlI{!Kh*^A@{1H0@RZWsk-pIw>#60W9ATlFQ94r(h#!KIWI>4 zaDf>=TzvQwog#DAN}bz|a9;Z&W7}Oc!)9;BauC?cr%DA{LkjeRKtYv^2UVY*I6;4^ zv`m^Wu?_Dd>F@<4F9#+nbPvll_}0o@ED~+#pj2-5>M7d-bhw`m*X*qsEy{oR3n{lG zcM1&tpn?3X(y)kOmv4D}y&h8^hf-t^Dk0e^EnEEb%@&!a^)xCekS@?t#Dx5&raFd} zK1@ndIlGxsMPPt+Afk@Wj}^2ZO0BokBrlWhrX?u^F4$Z`@4Lex8paPzpneiSZjb*U z3%>e?tM|f;hf^*eriX+65Uq$w&5J9w=d6wa+X1Jf&REM+xu;{W>y_x zgYdKpXJP6-CWDT`m7b7Ge-M3`myS-}w(>-Qr(|kTu7Lg&;PnO*zj)PPWy0C0bNL(o zU;;kbAGGp;CDpIT`xT(u)sM&wcrnC~EoI1HRUa06|J_+?4Hn-T zmQ_TMRn#i{3}txo%O%S!u09aWXyvQDW$kZTi~flR_$l<95m|Ld?SuHGMQMRSWVGBH zo&Mp6?l!++P#kWKk$6Ji=r{t<)1hhhj}Ak=Vy#G(^Bw=Qgp5!J!S}^IzQJ)`;eMBGIf3@C&|SA(;diN@Q6qTrC0)ADOrzBfK_t#rl5tpj_UJclEJxihLVVI8il2f) zi!;jh^A|kxPtpyYh31CGh0JVIyl^z_gY022%`{=PG@gD4R8}lMq}Fwip&eM=F62|q=#B4Vp$^}LiVMNmWtjhkqEVqx^WxXf^Tf8#xzTH>z#rZH8*9w*Ea;L zha@Ao<@nud1!j<}P9VVpZZ2NB<1i`c`2oS%o!>7D=_5ee-{r!L_Qtfg2*JPMqQPcA zoWPvccYO3)5>Q)7vPc#r(5cdZHg@4kasXgbzYvu@ED5UCW$4)BW^6eqLo%mvIi0R} z6n{?rV+oL*2X1Czuz88{EA zu~lrCj8gMpF_^1$r9BR8TMn$@oczDi1Dmpq>gdu?jqkYe3+G}HH7CN#MTUZIJplNH zg5(R^S4``fm|g7PT_a2lD2ENCgQr<>u2;dx%Zv$hUSXZzq_ndGqkBM zbE>%e-kb_V2H)my8eI}?>BSWbXHYpeH?uYy>&B0y&fOz~VJW=tY3;%tFAgqE$}mtiGp+ zj<{(TKU>z&_I~lD8EM&k?6y{Izcb5kd6zVAgTpu8sAp_$a<)tvnuD!RXswaWs(DXK za81PS(PybPrkt}E>lzf>^A#;@`!tMI_Ds%A16T_lZsa2yuxrTgzzzPoyz9SsN1W}R zN{e?W?&K8vo1AoR1QdnVq%;z~yZ6m~uYbAz}k(S8J1RIzO;Y zkhMweHjE<@;bGCMrioXr)EEV8A`5GC0ITeV0?jrcMd}SCi)aeAa}*Gr@{p@bkVrr= z1?(7}zzx6@-T^( z%{&Oz&gmC(L_?%XK@0-%G;vj?4z=L%J)K{@96OAQtcu_U56H+8Dl(9&fyfp3l^5Tw#*s%6X>-E4!#_(8}%+Y7S;*WZ!#Jv$0A;)LNiH+tKVr>zBBY?+K8RO;N4N|S}gK+c3=sqf_ zSb#c|VEbjfw1rQKgMlNCVgQ4q0y8jo!JH6T$yab9;Y0%AroL#n$Z|?wj0JtFP-#DB z_+9f$E;=B7s0pc>?;`g5-d+{SI*lV1yz4Yo0$d}zD8P@Bg+zjfz#&~FC_K4Y^&V(h zs4o2yBE=7p0YfbY6;E@HQ7V#(5+;fT?|dPkjqReyv@y69FGS%S zo`>1T6Ce$ifiQyr(J)3T<(4RFx}@EIILRl$+R+@}O@fqLv)mitY-71t*9g4rUS_W;XEV|=L1WPo2~hYeTbu~J;WE< zTimLN(*xe5)I$!!aI6qz(1+_RO)STrJ>tSx`|NP z^IFbYN6R}=BWi*h_!L*8zD1*(hjy5o9*d}cm33ZrHc?U0I^`iU*(^Tf- zTEDKMmY%ZYt9Y!^_Thhh+UhFh<^L?G6!LvGiWer>IOtsW{~miW=jFo6TS2`v_b2g# zP;W8(;nGon&-)YjbTD`J+jDgh{jHXl5C8y}4YYbq{cdIVDSaIg{xthe7>? zJm*V$S1jiB_4q#DpfQk+#VuNe#GMDI9PO^AvpN6R{7h?)w~PvdWn%n0b6lLRK|r#% zik&F*?lA#ugQm!wqfk#e;nIoSfGyy)Lx>2GyNp;dn%ES>h@Ff(VG43~m2i3%k}W$c zx-Ef!WVf@qTrTtMp^|>$uaN7?>bugG-+8Uq2S3`*-|?-Mi!#@n)Q-PdOC)(Hj}Ujv zta(wCFNVe+@OHmZ)y0f8)+-WG2mrtj60UrS2Az|Z2`!t*2@%i6?AyVb^xP$M8ZNzb z=i*GR2T{QnJB}qYsT+iL zVX8Xx9B``yDvO4|fn1fA<-xbHXvbleRFf;)Af)Nd&9n@ZkHVL4&x zxe>R$zxWUV&|g4%90@Sr)-o2k!l2vsJeK_gxii`rlwY}xdI1fa3jmk$>l%t3bskcG zlK1xzavkDgp)#Pn)dt zrKvcmXf$e-_Ocz6auk&X@qIIt_IGC=%Xd9x{8@GWFJ~ZxZgs>AzsSPdkTavfVTcJ< z9xtD-#yJC2T4igaJOB_w#}WX((|J*(kmg;`q?!}=@Z~g|4_6d5+;OR`9E5hV7Y34I zpFo|zHw)sQwL6O6FZM#FUjLqMRTB{!C@3L4X0;A_n`FgLjhBlj8hVQu&B-> zg%9_jmLZDUbH9%K(b)nAv}u7W!}Rc5^JtN2dz+Zo@4^c^Amkh$^h&^H;Fuc~Xdv1HQNMKDZ#)9`G0GV!C+vsV;JX4x^LCm}%{YEA$U z5aJvM2b>E;016o29Qh7AsN+yHqjc1U5s1>7@Y$j1NdM$2V(nu z`T6?gTswMp7hdyAAZr%(y7Z|@8Ag0hS{F{%4`)QF0Q1PE+<|-YpeVPTAR+B^Ae}ev z^9^&eUk^}nS9;M?t)ST&2(`|)7BK0KbZ9K{VDE_QyPqvI*@ZNe9ex&SK(fs2D3u|GRWa5%l_iizgyudN{TiZW5%y!{e#qt zaOL7HzQ!7I3Y7>cAa`TD0!dgYY-vOcDZILZ)CX3%ey+kRtbUw~Y0CYc3bP{K=agi! zY7?$9%4;CFA8CGv*BFz__xA{z*uh#>mRRdAg$Hj?Ul3YAC-fH?EPygAf+6h-8xZ1~i?t6v zFV;=U*i0@jtP{RZGk1^>>+0u0Dro6Js+VV3QAM~A)de&0LR75N=P!w2;r%mJmFzUK z{aaEj+Oh}I-Ck5bxk0?+g)unPIGUw2n~xSwrn!zRd#H>z$c!TLZU^@mnPmOUyQyk~ z=`}SzyopEN<$hLy6poxB>?gDZiWMnPlpGozn~m##9@Mh)ashYku;>746ZQuz2;CR- zo~}rxl0BOFGKk9V}Tbov1BLx>PgH{(K^5n2&K`*X$0Xt$&*Tlj-1=)&K9(qliEZrN z_^UXYGM=xjDla%-Shv~prOhdWABbJkbnrQJLbpf2M_PuPW>|1D*fu!sr0PoK?!nhX z>`+;$4>ZQZ%W5mI7Jtb2m8;s&gCD2ZceAeBf=a&^Y~SG`QShhJ>U$NJebGT)?efmY z(nF~nJhN|tFtU+WVxeO671|TUVH0wX_;sN%$AS1RdV?)=#V6*?vP;+sxko@ zA~(bjD6Qq7fU`B(H%p*yg$<>;qMJvamq3UV&TUFgF~1Pc(qbu=)ASa4^X=<;d)Wuc zKp_Ecv)oQI6_doM7GY4&rOOo2B!`7`DvPq9Q6ByR2=>LFBya1x9`!_b-w=u0ki_7~ zW|*{VsaU<5a@^Sit^+7|JR}3)G~ONQEhOaff90nqDsQ(ybAqfw1c9U%i&;Y#ujzt> zsV%7?<>oj)%*6H~j?sPF@5BT+Y9+FIv{t@RJ0Za&WYi zAunjM+UZpUZtYzLH8>86S;PIDo5gK5f|>g%VwJ9>Jz#sk z&eT=;8F8_A#e-pRs7<4R&W;0HNO=T<*Mo00N;tDDeBf>I}#Rkomz26xa+i# zUs-)ulbRR?cpNNc=`(l$8&1t5e^S>i&_q4?MpA~b`VOk$WDn*#`BP(hNQr;#pbSE1?Z?&l`{B#$t)XSmN%YqBF%fbn6kC-?Czg9dTSRDIil&#tu z=uEl|+%*g`w>)uSDpM`X0{WK;VB!k-vU8X~sl%={0IPf_HNB&)hLI`xQPG6_MSS_N z%W>-|dp<^Z%1vZbjOBm2rA(naf)B$^5WQc`(tcI3DO;R%m!C|3!mUV6+~Tx&fb4rU z##zKXogD%qiWdrKu_UwK57?Vh^GuNaKbk2UV>ZFX-_$ii!0_2}b=O94y!;HqmJObH zU-2uTz{sBd$#4u%mNqSNXfjaHBcK-rbUZ}1R`mw zfU^H{$?BgJM{2uWfmwnED8 z^5vgqwvJVHYx3_TxMzYnjmVp-ID!sDi7bE^;#96WZD|OEOeJDsZD@4$UCsTiHd2Ga zP6GsoZyoLpo?4i1-XPm5ji%Xp-FaQ-eJ8nSTg-u6Sm?*@wSLj=8h_ir_-4Sc@wZQy z?iB|H|K+Np{ngr#f6=8x_w7?U%wvBU3WZ5^(LrF)Uexb7-LR9?VyzC`I@` zAIr_r=B|nmp#jPP1XV?__^*7plp>UXexYP>%MnBXiVg!T2w^ubm_n`43fVW8P+(NE zNa9t^;0G!szLqKw;C8|QD=SnIrG|r5uN~^WdN8EA>a2!G5m^$kx|RT2*l`<*qkg<_ zJv3AJbc!649PBFB%-C=O?%J`P$Mhn|km{?2W1h8-5jTOhBCv^SwLCII zQ6qA#*WAzPt^G+=K;-lRUQ?cI{$Ct*WZ>9=pA`rape*4Ml?ZJTm535>|1AQxf3E)* z#MTzXQ|PaC@NYu=?MB=OT`Ak?K?H?B7kY31ccL^^1Xf^xG7`@}X@v;N*=FB|xEBxn zqB8%R5L7_gKE!|LLTnpWMydw~PF5hW0e4GL5P(hUNIali;g{-2ZI|lER>WVc>)(Cl zA7fjx3vxUJ7!NOy!V_5q(6oU<9E4vuj}!w=yeCd)=9+(X!VJL&x}P%CVAvOr4vU|_ zf|4WF{FWIAlfw!Z#c64g&>TE@O!K8C(a+&k*Lr8Ykcmk?M?a*hQl2KV%aK%&Fj20L zG|`hjO;J6t1w-Ks^FA~wXvsL&QO{^h_DgIVL7;97KB1ZZMD%UD0>NNsUw@HJlpPMT;!Oy?FjAV!O z(dR|QTBOKpYc=;xtHMp8C0q~={8mx$?b&W;{0?XF^vmwpGYo0kb`NRD*XNzw&ub5)|yv?+_w=aTt-?rm=B zuZ}bf=aOSqD%CvKk9mkT#-1*t0}K(iUP4Iu;W0HSb?%omDB@ReVtQmi*Pj@kg}QMn ze7Fq!r~A4Gcb0QqLNX`ZM#C^?p$kCDgYg!i*$Z7R0~$V-To%XZGVBy zPNSH!+lJaVw_~8JNwB2J3#NFmuELXk>I;S@^e$xp^E}jsB|-@+wUlB z$h!R~ovc>3?e;o7N;B2ONrjP5CrQaaI+GwAyd)#!!ptYsLord5QW{jO2Jmf^$T_Y{ zvJ`^`zC?wq(74HmE|1rPdB}XeUOA z?tbieY+#BQ)A2F~q#k5RVNa<+J}-J>%aM*|4Jd)s&-uW_KeO>?9XmII@m|&hdVSPw zJ-A=ytY5Oi;r!le7Nz$d9#z0ssws3R|O zAma*g?-!mDbfL8YX$=TSP>qBwxb1+Ll<*Ibg*SKUE69N+FfAxrDECql{NRkydX;lH z0#hgY;y%R(#1_t&b|WkIsHXmR9P5u&(M&nbOO@nij1EVmnX_D|p)iAC7kYtJ#)82cI3%Gm)b+h+R{uUg9$`Y&{#X>&_Plfn{4mj` zl401A!Ec?PCA;A%?6j0?-)+Jvj$6><+K{+E7tA1JWrlTh_vu-S5!l)6qT2($2(&|U zb9jyrxCi6H;jz@$HuBq#9CylXHolGFxz)1X$YMMQj@Ym-sL#2JyNdURkxZ?DWVW)W zdUnuysWV{!wn0j*A?h+8C}D4*$>a+gx@Tb(3Aq4}2Dmq1Ts;ja9#5+frrk2X5o^XV*+CJf1NmX3K zp3&x@bVBI%4fBjp)T%3^w0FY=LCTS#fsRlk8TE+@h$+N`o!Z*=s(C>SfoE4i#FBLB zDulS$^rfRDccMPC-yh_<#haKL#ta=J{o=4nLFpZy?JaHGm z%b2_ZqP+A1KKRfwQmJ<@o=>s>c`}x8seIRgE>w;yaLOBQl6Y{f3db4$(y#c;07@tv7#aGlB6F1aQWYemKt$+cx0B z=wT9%jps0sVDoOeAESnhpx6cCA#>1xh5%5&eOutsToK08ifO)Zhagfu`H;=9ajYb> zZ)fJdZrJ18j_zit0R#yGVy!K{yU<5g6@#?9&l3E8A1#>DW-;OL%t&9@^1x3Go5(s3 zZ49?rr@@}-)*>W)k*hq}Zr5a!wtIwQ+=%e8Qcq_yRiO^X?H;A%MdfpnexQ&z%q|xI zBPo;X4}u_c9;EZ-yGLP}s58kOm1?21vZ>p*75TG$YulcZl-A}sXoSC_nd`Q?TRIP@x_M$27ksiGP%HY#w%rrW4+&)PFBQaU@x&!=D(-O>Rt`=l~NFZrz9;` zt}L;pil9#OMdgh&%){O*a7R05qTt|kqJLf}Ld#7g@f zPGmD@bmlb9M=uy6l|Y1C7lR9#Za*fET$CtDO?M&d&C;kmADkE*jEq_bHYfvPgewCf z9RxS&>Y2JK3hiPxShV}w3#lHmbQJ-{6vhG|;|Su;l@IOCkBy7ieVgD*!2yB%ZFeX{ zBnC>Vm6UFTjZGGu96II*Cjh>l$@_kHM=}r+rGuj0b21eID?YJ_I=;X5}oj~fl!C~6#h%Y6f}uM$=euX zl^CZM;g0eJ<062OXOx5rT?7V(H=G8*2a6H^j4|r0ZGrQaC=jPX0T^`r4adfz$vqVG50%O8z>#!DOJt~u z%I!LEKDlrqQeN7;D$y4%RS-*-MsIbLWIY8fk3dV7_Rp9}YP*=XN%TT(%JXREdYXMc z(-j;&JP?*Z=F+n|k64%74u8dft@Sve`iaZgliJGq(` zEv#;5(jqyzRNJD`-{oFzscb6TKycdE8?doE{2XttK|ByudV$?2IeJp`YS)y`c#>?+ zioqeiqCC}1*q806VgW@c2xSUi}0f&C!s z$4BfDt@~o@Tz5X0{95j{qmGw_x#~Y8ka|SzQnIqNytHuXkOaoXJblBiuCnD%^goF|%TaNO|zob5cBG{+c|< zo%UgEi`+p-H3Zi_gW82U3V{j!azrd+cBV zSol=b8WKE02~T``5d*mR709#vI4ZoV4;O1^3Zy7IUtNLcjz;9S9HyK2@Q&)%X=b#HFkz<~z>PZ&v(B9EY(~5<1Y+8x zqjY$$2_i)3aT}%X49%e20cJ4f#Q4^dz3lvLqAGi4x%$nEaf6v4PsqcdG5&-ye89VX zH*HJTzB#f*682`z%G~3_69Qk!=%IhG;>~EjtqG~@+Hjj_;?o1@2k3hC(BIkGIvcw@ zc3niO4boOF5{Ul8g5x+s4kN@=HKM^F6#xp{aQDq3jj zx+${P{KA*pw|l=bF5dm4a9b6VmIo7=jFk2%n#*_6OneP`bVl^!yuL3Xvdarj`qR>T z3uy(g4>djmvzVvFJgbE z#i17m%R^a~s+gP6^SzNCw=Z!FU!Xhn4kFvgtyDDrg4bK`+4{9#)2YQ>KdteuNae(z zLNRG|{mEmJ?<<>{Z1S94o)q7Y4i3o_nHgLN>Ina$3t!|f{7(c37aM0AeHV%iD1c1! zoRfy`?+~bm{!>8RGSoP{-Q9q2_{Gl+&%tinjvnFZ`j;#3uDobp!<*bfF0KT|VhshW zO~|HY$Y!_S_h8AUz2RjAi>U%q2cn-91D%>mCk}i-cIhc$YQ^MzD4@GW^GJMZ^O1XnjJR zHd980SCs$ofJ#UhU{qZ>&zv@FZB_?|e?#!C$XH^F6(CU`%2oDedR1pL8ZlX>>mIp4ei~P!74OW`yvEA z6Ahi&DdnH)UN>$wHa3d#L#DX@g(<&idWL5gZRFy7jqjklJ00z`Y0G*U_)T|{OLV-x zw@@Y%;<8Gop0#iZ>13u@=?0+n(K&2UQdF1&8e?fBluNv#l~8=3m5`Yfs-j9kERh)P zJtC~JkVXmCK=zCpVWQ6$iwFg+g0G$o;6w-`AD|vaNV_m4n3+4Ofd+i4li>5Uw7e;i z;Loy5SF4i1yFuLEb_cI&PHHl7zRvLTi58E3ax%O1LS{D4zl?NU83TIYqPra&1XGvw z#hJbQ55hkL3M+{HNx_+JTK67y+N9?YWjqTyB1Z%x_nmI^Iaf35tJUb(#n`F}+sg6M z1K6EIQ#<7zsP15L%?RctE*b^UN{kyZDk4|zWHgdAuMhEm5YdWSec^xFg@lA&`R`VY z!3aZz{NmuayLcd;69Fb~$`}0+1L)9fJGOrs)1RgE3q2)y6K$VUn`ea>e>H^h zLsWMW?Q&F;_D`W+5K@^AT^&o&D|D%7^b0(f&oWUX*+f+7lmSOZ51i%yJ1J6CNEYUk?a6$7!hBM zlb@`7tv4J>)RC>YKLV%7{Q*z9XXIky4s5AM_>`CBYuZ4{5lj}2@ah$+(h1QelB09Q zTppe^ap>67kRBr8S``V*JF;L;s888w=zwO9t!L)qE;%6Zm2R#xVM)c^B)%dNHUigG znmRBZ1Qe*sU zb#b5KwH$!YB5mUjor>J6g$F6l z764Joiq3rVl(cHf#cU;8XU&P~H)`bE(?e-*i536?x|;d!v|!_7&9+q6JvdXgxFq2BtWj<0plqff5M#>pF*=_3yElLbvcDytRc~N_IiCPmyfka<%y-~!zM#Is z&HfM^;C8+6c;$pel=~2HI)tA`K2GURyW|3EOY*T(WJFr*HD#acc!cvmGxfCYejk8_ zchvcfsEJy_GS%0Wh?NFXv{wxvrNCVWUG1fCYd3v@STkr2{=b_M^gqpTxj5K>D1#`N zUq_^%=b$ugN`ojApaAu%o=8-U^W<{w15bV<8SrI)nq=b+{h=8SgsWqhw!T=Buyh?# zI!PP)-Oz=~Mo|0ctIn9$m7~Iq>$D?mfk!YUAo{&(?PdhKXjsFUG?0csVJ1g11m9kv zUk3(W#UhNZbnq7n<%$>RtotC72mz{a(CBip&YRgyeArzk9H63UT%#F^zzexPxjUhd z48Y0QyGY~=J@g)O#V%9ps@Sr0lE6TJy%HhhKm_r_9+A^6htDsIULFeiLjle-o4Iq@ z&S<1jtJtQ_XVLC;8Bu*#jkD%iw%AG|m1%V|2T4T{vHRJuxF~kpHyMJL0dhVHk#`?bkdA0`Yu#ow zlN?M>*Bp81$$;5Bhar$tBsN?Lj=2tP?kXDESn-8L0t9&N#4&mP-Qz!Wslmi`_&dU9 z3|IO0<7tA{c0dS27?yVoc9?EbJ#y}V2h=PA&V7G>C0j*K#Z1B)jhB=`S`CIC#es)@ zkl{BNWFm+fjkWP0Ea?2@jF_rXB6fCoWq+I(XcNtS_pYx4dAyLbGcgkqC5$)7VLZv4 z|Jk)(8=%L{uRg;10PDHyDvUy?-ZqLZQyU{8!RpcuM6OJO)_)(w(j2d|l22_nMBy84 zf&vemy!h~MQ@BDy^yBjEE7(EE8dJU1R2TY{PpDd+JNBfMlW+{$8l z^Aqmh*rU)Il;2wD3U@5D?@hQ++(-sQ5N(JcK0NcD8?k-|m_jcvd5V2-L_%I?n7_?< zCIR%$Zo}08QG-!Fvg6U+mN)m}52no)k9Z#=+L^lDk1Y`gVBSoQZOPsW81ndqK`rx0 z%5Hq=&#q@NbMUl~wy|8a?UTBY&DvEJTsv z)Ko6$v!TLqZ{Tc1+rRHAcf(twlV{~cg<+?Z;6Rs)nD)Wd$Km|8FVyw-Rvv-)@LV|9^*UZWd0G|0Fy8G~|^JSWtRT zw4YC97B8L?N1U{EMP%p$%ZEUDAofdD3AM9EwAKy#*jv@%f_j=81an`A*pG`Tv-K#2 zxyIV$DP_|dhV8N7_I@~`K8fw0F{M7BmM=v zm7%FOt1u94WacxtxG6Pjjz_cX`gEI4uFIubPF;2def(f|x9;JDeG3ieDY^=>ZACv}}~+YVa35zbg2~ z%x&KZq=1*%cJmV15|prp3^RzPqyJ*wL=QTnLtX^2CzJ&IszR{VrhH$^KvkrVK2^mP zq@x4D5$?{xEUV$1qrR~z=wUEx#!V|9nO;K{1zOSOJNU%Zl*4-{`HO%2tZ zP48xvYre}Bnejp1L117v8Vl^80h{0OcUP$y5IMxKqy`Zy~-A-h&#ys$UiSkMx~E~;Q>lq7kEbKtO1Mq{9C0hvFG=O1rr zsj1?Ww6O?bD{_P1$pZih*lji3k(7RAI=Jevv+wxF7?v@rIDZtpQCWh3D6o;{Q9S&Z zAae)QRzJyTW+h0@EI}wGekR0O?J>H1XHlfdxmUo4#$(KIM`|)P;^T=$9gcA{85tXm zX+%-BG3PU(Om~WV#xV~nYoTZw_yKE|q1kT?an7a+is7gmn<@yfwEa1rZbZ5er-sKI zFeiIa0)`cjZ3By8AfpGr4^m=XJ`824xo?3lTg4&hEy8IECru79JV9uY&xtMrC*qXo z9e__3>v;^>V+325?^XtW7j_@K)DupVKJLpQL13(xw74r-1vAak*6(@+xkmH~9%Qr! zhG!0^B)VpVT2BYK3_xYJVnp$oC+((6nBZ~Ff>AZ1U4@FNF;e|GiWIDxlqgC}iNf=& zN@3xQ#KA&oKp~(Ag3SP#Pf=_--6-1#c9CRNY1^Rkky(GEn&Eev4;eaF?2f#kOlj1BD9rA8@I4!Kf50< zy>N-LyGIuQbDlccT`Tp>;Pvr=`Tps&-A*|RPz33y;x#|5bbH8SgNAT8W~@oAqjr1(Ta%;_4y!0Qnkm5Q?~GF#jz%?3^m)I4^x+pA z!se+oU73A?cCICMi}DEuW?e-}Vv>IXWzf}}-y8(6@!@|V*;d`Y)$#f^DU3d;RN5(9 zq&+q>vqPnI;p(15c%(=_%!q z*T;dJ(5X)6b?5W_SK%=l={WQ-Eduba@Y$2GMrZc>Oe*(*Wdkm1p7b2qcPBm{sX01U zyx=83Qv5*_%ZyV>ToEML&;@HTk5@friYtCgqI=40E;QaJc$eWXrX2N5d;nqjmH zamC1KJQxP8M0892yqEa3_w23VX5*s+CG<8=vM;aBZ0F|WK;--V+l%*DUtSsT@0*u* z|L1`|c+M|e$^_q^>=1EJX2o|>js;s+;xA5*l+08*3-0}U<>i@FRm}5D{>=M7QK}XI z4)HdljJvZbZqCZGsR(*qzl#c&Rh=czQmH+3Y4O)crJ?+MRu`=2eF@{=u0{E1D_=MS zvpDan)BVQyLFfP8S*b30IVZI}*v{MbLZGN6XiK;}2kx*V<}%VXIgc(k+b;tdBU z&<~189i9NfSSIYH2)dfh@qhInfdrKUw)r~YUC9JQyucvMH)kbwr}xiKz<{F`3~JUm zSC3#hd3gZF8Dsq%im4mPc`aF;y(3)$IdT--&PE@iNxDD|183r;G(^YJcBQ5T9cPX_ zMHlalyi_}VyZ%4~(2=o-DwHz$CQ&Gc)Q>-qvtXIfj=^QKK!yNYS|~qe-Q6dEmw_R} z4|So8HZL*prW#u_LWXIs#t<=KHbU|hj}AqDX3=I%85+TbOS%%|8)+Zgj6qfM z^UXS2#|w7f#PJDSC}NKBI&!6;OhWx|#4JIz;iBdiM&;8I9BD1Cf4Ho?7{{e}CzVY} zu9@d8m}ni3S?RYd71OmEpD4`pqh2I|~@orG6Y-1kB0|n~fAL2`=M&Jg*)S=2{Y(=8MBH?HeO(+g zYd){fEUf~~N*h4mnEiW1Q-qr6-m0azLQM??mm*6>LT}QTLQYXf`jN!S(RUiTEAX-z z&LYdi!$_7mEw9R+3a94wlDG1al*f_s4A65J0EG`LedZ1ZQl-eg+(_B@Gk#l^&c=&6w%eHtx zSI$JI;IpdGUx2ei;w5j)lD2Q@rIxkN?VMC#s z%m6L7>~1EHUr%C5-}3~v>2-zW(uG7vY?bFii-z?JCRuqaeo5!&;-y~! zN0mPFD(a1YD*iS9J~HqBt*AJ*_sil$M$oIg@?$>4zdetMK$@YFYOPrQdUiu;a)3Uss zJSqvEh+pKJaeh1Hw+*qAHp!nnF{~g3<$raS=pX#b=A20o&En07AE#M9 zNwilApcQ?c8HehkUc908vy}^_?K;=kLQ!o;rch1tt!WjEC(KH+nK2pidXK-?d|}dB^X9>3Oq^ZstA?`-q7frl+AK(>+}#0yOS4QPv`ss%lre>c*zR>tbQ*mtY;V@- zHy(zLHla2*SS>mOSjI3me)->zrBRMZJf{LBU;WG~*_5louPvN@Erq5%2$ul+>B6d2 zj+1u6L=|>P_TdTl#kcQ^hg;nkG3UE~&ucqYG5qTNo0M)Wn6(DeWrV}3{Z-T$vp*a0 z#ZF*x|NEYn;Iql+3w`(o>jhErKU}&C--LS}cj!ckO9Zf$!_FGSFHkQ&mHZW5zeN9k zNW$~-yfs3)OL1|bJ9Aj{_K=A=ELOj^HLHH1rR2+1uoH)+87KBb5hZ?G%iW92`;Y-EAg}z?l zv>8HwVOhLg@o=Fjo_JxNkRVSyJSfK{ z-pyAC$t4~RlwSuN3I7IXWVZq1LYMTx5%3Ut9WWkb!ya4@Wi|m%!9n`;|Htn)`;Y&{ z7(4?=TL7u;WhoKKP|B0r2eKQjs{$sM)fW@JO-@v-?kP-X0+$vA70wm4`j1IMN z1Al~veE9~(hrR_v;33bhZ>EAT_y;^B-Scg!kPi4Glpp}C2M^)#{jXFN==^suA3S6Z z_-`Nb=37FS!oa`b;Cb2D{&(4p$ z`eNymLnFT*p(sGJ$M+ou{IR$ zF~dN;bw;#Dy6TsoAL3&d73$7N#4Nn3X;u-`>dIH_gegCS4n9#jbM{a=q9mrRCOSwrcYs%(pCwq@8lhLou0GJhn>lCG zR7s0xxhI$mT%O-W_nzUMPAzxzEr?HlCBWcpNFON#xlVrr;ESGI4w&4$Ku*mGRwYJJ z3bW$Fq!I|0w35OG(q0tN$S?@)zfT6+U zlRt$~C&$f;Fo26C%LcBet8hC;-gHqf89<3N*%5+0iTXsC3v&Wr zlZ(}*hwkhKV9!&CcY@Gi_t6S)C(9*U;bbNAX>G>5+=6kuxIpm8BNSbkT&dCMIStZV zlR2bB2)HavIJmGR;;3eHriK9th3b8v5v&j%84TKJ&@tRnLzGUBz$aQ0vW9+; zBKZ9mtLizvdZGxe@5@sGO0IB9s4{$FATR>0>QOu(gGD93nM{2xG1|XGwTv!X7z~qt zRV_qI(+CGA&rlC;$_aj@==u}vp2Hp|k5cR2WrV`KJB8nAbG~`iiAwpC`T=d2XjqU2 zjmCwh6P5bHKg)Jv^w`m5B`kd$cewV?BMax5VCKF6RVTHspV!Ttw$f9rb*FBd9@pvj z{m41s#!gs&EcO;MzF@pCEjsLMNYOlUrPt$0VCbn%P zc9!h~yF;9#;ltAR^aWQ1wHcvLtfJ^Vo}GWfR@v%0`o|K>rz{3ezBHYLbNh|eRykLZ z4Rn}l=`R{FbF45g|GrYWih5b5Yra`{KeK!aSZ|o8Ex?~Si@dwOpqUer{OTK-Hj=zi zG3S~7WPDB?`#8AQ+}(ADE&p#v!ms@4KINO9&yIsV9X3+bjrCW)GHPV69$lW*qw0Mv zcy?2DA7j?%($MYmWlh$>J+kVnY+G!riTgCg6BzE{7cHOPM~w%*x{}VCk<}wJADmAt zfcIkTmt)ZA%XqSPtuzg@k8`iyl4fiG&@l z*9Y8@bCF1%P4{cci(eCG;#`{T4F_+rCH+&M{{4LVR~k(?y$F%%)Is@$2F)C-)-S4^ zxm)as?;#KS>@GoCHlP|EeWm04d&7jw4(O(J3c8LAyp9Y78DV@x^Z9gQkCO=phLz`O zuvt7pY|6kgou-&ZB)6Tmh!n^=y9+2w>=i`eq@e%k=4+ZA9*MR^a2FMH2T^rarY__l zA&c=lMp_n#c@GzI3zAXi_q5v+8A=|+0c>R6g|{9*^*f_0P(I#Ht?4DDSt{QS09SL# z4TssS4cm1=%&vEKVi*(exeX^$Mzgul)t`UGZ?`Hi9a z8z-0(KL>5B`t`ZkzDj&1NJ-L$0!oAraKq8ecUnyvaPt_Mp#y6}j$(_3db5x5>=~ZC{?nbZAI4eF)H2Mf|gvSo@eF+#HW_sXA%yDyO2~WhRRvw|a4~$FRYFLfM@n`9# z0)!sg3EERO);QLSjTkBxKuHfaKUbh0hc+0>uEO2qzeZiI8R#T8r9iL+I!FMO(q7TN zM!A22zcl?#Tz7>{q*F}u?N>xXiofOq0i~9Wd6aa*kC*D{{uCn?N($Ov1#m!cEmk2_ zqxG+p1aPQm(yq7Jx)zl>deC$n=WFM5#?OBW|8Q_C0;8bl5}AJ=0jX3_Cb?p)1?n?q z;oxUUA9rV4_itfG!XfI5g-Flk@QH7XMH;C+WW(K*<}z2H?ZnKVzRArRvWLo2eWIt% zg{mEkFvU@+`04U*6|`jrZdjyq{QF-#utN={Vbs5R=G&XYVsH%^jgP75U2I28KYx|y z%xCZV*uw?Qt8YzU0H*922&qoTWu1#sK7YzZ)B2MT#PXf2rcU}jB^MUA7iAlRkl%Dr zb99-mX)=R795fSOBFh`m}9R}(i2;`B4IS@ zs(lVxcv+SfKkIiRvEP{rL>D-UTFyP)w@4m6p2SB|N4GGhil2Lxhd*205pY)Gwb0TQ zFt>3YN4dy-^8qLX0bSs0Upx1L2z;q2LGS$$)H9&2@UyVs zxMn)xp%21CJH=4$(3}0gyN-vSOynxqT`y0D4ylJ?SQ)?ZqG|V8p3qLu za&Brf7bs9yLmG2Sxz1w0o)aSTv=dsKTEh1DzmB%q)lv+beKQaoDYuY9;IS0*iW zr!UnBdy;GSYggC>wIhBt*xS17+qlGx>?bmmvS2?E;OP6qMA{bGJvT>e=|OE6 z32uwXyom!<`eRas#P((C$m%11(gT~)kDTUdZ|;ti1EMISI2$phoC%!uo1tyClkS>Jp~tG7D8h zfqdRNUwyvhq?yDDB1@h)S;y#oV=n+{+H^l`Du@qYgK+7RHVh(7Q1Oh&A&`V{Eh?_O$;zz^oXgP&GZuO}PB>zx+ zFx2eHk@+6WF-tv1@T`NBmUlXtB@))J@m&Sk#9kuMHoxfJvt7%|;B54CVA@B7$n?=@ zb^!SszZ&HgO4lw9j6c%k0XOZ)p@W%X68l#ng>oPoJkq*!g(3TBJY(b?2bi|&kWF3J4f|Mm`CVNPL+}6H@3!Jc-X}JH_IT@t zPvrK_?K;m9oOzwEZ);qSlJeDZd*J#bEO^Hnr-u?OuN!759oVu-9QpuPTbHix4ZBe;SNWoK3J+6-D#e7*`gb1ASE{ldFmx-&$=ABB-3QrfFF5c;j`3X zYk7Kps`=EB1&wr%M`GEZabK!jp1av`U9bF_z3kTN56x6wxy_EeYiXYl7HtF?vzI$p zI*Uj9AyNJLghQCtgcx!FYfQ(hH)~WU;QepK5>p@wwlEpj!$^^}s)}wDyM$VT6v6*M zXL@i}cvkCy=y*}`gR~O{?U-H)n=veS;dc9mGScUHfA?YKybgA)p6$bQPm~m~dh+}J zsgToZO5Tpf)>A*WT$xidj-2yl%hT(-PaJu?CQ?=cmXY`8^jWaL`^CvO%t0GGXIjI* zkpZskK!guNF(UQkbfZVlHr_S+)1W;oQAJ2y|AR8~6LQM!LXQ2CU1vfioP)*3CX?+#^qkjDDcoAt`a=Eb68a=sltNeub!nJu~8Cllf zrb?`|rhIUaIM)gk^hW9`0Le_O#R_7F&o?#=`emA#1PiR&Z{(}7cd;k^-l%OZTduX~ z`$$Aa#J$I;{iJ9@3)k02&Tfr5${OfIjkrMgn^d(sIh@*?`MnU?_46}5a`Zoc3ij-q zlssF7spP`N8WVDP1?-iYS2<^S=K*HbCG^>#>I&FQ72tMyN1XlmHs1%+CCa%~+o7-@ z3-3Zy>3M#{agQ2#GCa2Ww)R(ERxMtSW?!@&l|FbAb3~GLL&X27Hv=Oy1D(Pu81_y8 z{7+Dp>3WIn@89#Ft(+*gtK+%IL=ukP_iQ>46Shn8TEz2LLpG8m{-2`0FWW~aR4&!k z)NHA#cYy!j+Itt1CTb<5U`?nZsYTD>OrMGKkhSRmWg+s*%es>Xc<@lfa0`;^!nV9h zCE;1g{Y};U^{&;&V?zW{sV#HNah-?>c}!30IaX?wXnC5|tQ{@(>9oghu^FY)*sfO% zUifkE80e!oJJ4q~wz5OMC zNy;P*bbKlJC>ip;m22i{u*f6IKG)m+R7fEDG*aMzZQ`F4EmKvcvFt>v!+ zyK!c@hixyBYhs*8&{U0TC{{AZ1v|5(9N-D+glTG#t+iXY1!0aTsrdWf9T$_&fE>{g z0IeRP%N?GmcM>hzaRg*NqO9{bo&_KKrCyv90`33<;S zy%r^Aia!Z75eQ+w^lp)uFBl+07%Ws*Bh!)M_e!0vVW?QdB9f(3+F1ZJxhCS z+DrStY+|Wr{JjZe2Qd#Uv8MMS0powR;qqpm?OJU7<0}Okx^oK!rn%*dgg@mAb+YDE zd$HTrA61kZ8|3>zE2RggS3}WpryZ|?-{}PfL1Ip*N}Nuk-~tt$a3q59Yy-v40L5lb z8)rQCiixzAdelczyM?)6*$Ja&_w$>OMBXXz51Txd&|X$UzLn>)<(QXv4?W$ozb^0u z@?!8sfX5^Q?V|_c1@7bL1%{o+`Z0gP4Ggot#_aNMVLoxPdl)|MOK3O#yR7_63Dy;Ci07nhM=rRiZtyQ( z4$WIY%6Z#-S8tdU(oW6Oq zeP6-lwd+1%imVQ4G9~{ux3zudiCs@wi7)tGhe<7*_#Rt(qlZA+c->AOXx(!t;xg3N zsazXe$>TRzywqmN=t+MGX?Q}m#l&}i{xnon?EsjriS)GehL8e=HH?2!Vj20tZsSHG z`) zKJrgUQ^bI=dft|b^r0Zj=y7r4k0wI2YyTW?81EARv418CPhqY4BC?aY9`oP{gn-SLo)eMOIf z_L??st8#_gwu+`Xk`xU!Gs$hz=}Zy@qGvzO7Gkd%lG@bXBo{uP9UVhdE9UQ}%{1q1 zhmalukN9di4}Y}gD&NMG->VGS=K}Q4E!+<1kFVZ-2nT(d&K7*|bQ@B}MdZ}^#WZmf z-z{y0v@&Ss4Icq3C$|Iw1Onu`UuN}u4`|5Osa<(O-89c!!K7#`JX z3*DWrJg{)TQm17l4fQGvB-KOPW#dE&|H5k|gK(2&Y^)IicwVjW0r;5lc z++)CnG$ZdX6Vf12y=~Knlyc^WGOgaOVQ>mmqo-o51ezIMAeOX;EG14zdzwPK3rH80 zgUnghAMT7;W@7tBoliA}P)4osa)D6+ad%`SqhWCw}YL>VsZkjk-KN z9dqG~zxt1U#($WVt8TlH?w?>>Sa#_APjD72A{!?s+Z%_dR}Pr;f9%X0a4h6E4IBv} z4<9P4w6(K~D+M<{&;RKWa`3)Q@0VdQ0)=`j4#fN*zkBVQ9jib>-t+!XCU##`+@rpM zRQ}L(VO&uNlFEd$5UTrN{a$b+<{PWK!aG+@sO|C0=RNyYzU(TSIr4ycVRc zo#IPND{0QGiT3(A**Qk^M4nhv*Pkb7FUAcoLlAa_+V+=oD7!6F?N3pQJ?;}iV<1AW zHlgNu)9@3wrUaWJcVvTGt;d*(t&8UEO6+jBJT~Eg^NfSNuMbhMb0ie|56! z*w0|IQm}uCdMV;IvjwgujcqmlGX>M$douGv+w)l2Qh9~m5t4>^A&PH{%kx4l^~s2g zUzm!()p;YbWN`&m=oy-QHN>MEvOvU0+!vSEx`r$6{qD<{B?Iu&{=73 z_^97$@4rc$Tt2t1S1>>Eey~XP>h?>Wy~pPm*8P?ClbxAcYW-K1!SA!J;^A~iH7KUK z6p9Y#ql%B}lE(3`Ly+~SghZg@xDWE-0VHTV0rC4}t6A+{4{eO#o^v1So9=>?S#U54 zkMl8dq~UUsP5%k|%(&$r=O9ZjAH28T@=@PoOTe(Y@#zQDfx{s2ud`fJybd}qhHDAp zsehV|Fu!@Nm7Vp};!9r5ml4QiMAh_F!&8H))wFgkkDaxB>dP`)(I23!j%V1$Q?S#q zaV}dltHKfJusO(Z*FvD1Q|a_GtXi3CvG>QWlUI$Iuamb)>xQcyF&TEkmxg2R3VgKu zIoAJ@M_MD7EE?;DS&(k%X005BzUgZ+>a?H&T7;c2E7UD47&5`siCHSnRDX$p;gife zNs%PhHH%`&PM9fo9ROtIyOs)M5%@gvU{89V_v{KpK4s%nwCp7l=yomD%Ode*fFq<< z?DS|r_I1{3L#e4bj$eO0zViza@@QwQ5&wBDpf<$0w>&1hVuz88n5mS4_!4mpTPWoh zBvNW%jv^5s8AWSj@RbJTghx_%a_G6u{%i`pzCKKjdQXi#pBQjLL2}r{=091OKMgXR z{U>0!Au7~3zOOOkYb-*k#1x-Bt{wT+YmTRkbzFL0hkANawlK?h?PL0!z02CzxghP9 zQl4waV~g+e<<(W@X=@=bdTDWntz~>Pw=zV?*{7yy$vKNplkDc|*Gr?3Tj|(%Qd3sD z1V!hor%omBI3h41rFOEB@zBc~ZlUH|qr(l!aBDU4H)e$pl$U$7zpj^0;*RkVYG9|d zE7BkRnJaz|U^Z*3<1alo_|+M$Rj38^ubTY$*CfUb;dnlY-M@<+{CXYiX&}DE{ZITW z=8(6UwhEmY!7wF#nDeF2_09F*!&Qwq*3nqUn@Wz8ZzQnyY}%3Ln9=C>BiUg_zB5zw z<8QF2>Y6oC)&70eLD?IrkNo^%X|M|Qi*sFCRR^n?k1B5gPg^wPyEVc zS_|LEA0OKd?R$8pp|u#@9g`ka7~KPt_Y)Z6<9sh~ptqGW%gpnX6CgBs*>N34`M0vA zCUAq=g<$K+4zmvMnMu8g=ES0x2s_=O5D_-71ptDDRK*Jm5Ig(3Gyhiq-mD7a8d8v} z!4Cs=DWAjVHE#Iti|dt=k+^P#U%;WHhj?$}EIzmUs2>qgB9xI(nmYu15Uk=7Fb`mE zU_8mo5lvqYoOmv?chwg~6k-@J<}6&JiU3`Z+Lpb(k2V3?!+oI>8|*s%JFvd1Ar>F9 zl(-nyQ17Md^8n8btZ8o*+L83x5cq-!F~nNzYe`(1lRP60q8FtoVN`as5}ld2+>?Za z+H^;p%I6{of6T~@t~?jh%xq%-HEll+PXQ0lo2qA6I!_)~N^lq6J5)F(WUhB2_&}G2 z;l(={Zqk?{GhU9gC`9yQICv8EYxmOl4~h38(Ggr;=QF9Y)TlV2%V2LNkT9{n;=3;r z2qi2QMP)GdXmC1*2?(`SzbM2W8-63a>BY@_kJI zpYN+e8OflXwJ=_Idh`c6_-?NIDky+?-Fnv2&`Ed_;KW@RD%+GSA2oUTxT6ym?1RVI zk4sv*FwW-=chf17MH)0wjN^T1Fo21D!;(R9sFn0re3hg1VJ*64h6$&)`=gxL;U9TS z?9YzCn>E=SFP-F*FNl6g1paa_Ja+E`9noK0!bW!{rB> zN?DjjOr*1#vUbycl)QyrlU)7RLk!5C4WDF_7*}ub_Sqx`HH!9*!84+CZ~3K1e74!smUk9McC4qi-0=Z5BCa3j3J=t? z^;w2*D~)}?#CXkzt!?V76(3+7P9^6g%f(shLpdTpy~y8^NK}U=G(eCNnQWFcBlYDS zhv^6^D<#LQup&RMsW2G`|4*Z6{HfZ$qS>4inAmj7SD>e7>V{%VH64CUGPu`0ZJ+AT z7e-BU%OvRwS8BGy zBo!JTk;Ody;Mf42MsDyzyFWGI=2pc>Dcr{?S~Nboeq5&_JA2rJZxtEHv~0u~xRP>q zaOd8lMojO#)IgMgbP{XU_JW9wcu@I#us5*rXKFP z5e(91udj{7SNHw+Jh{LbI=TNVuE>sD#`bXfwp@B}`s2anUs1IwuQv4@&k(Uo!;tMV zlzv|95#GeLf5CKTGCLHPsG-}1oWnzW>j)Zc_l3_`jzr*Ff~vSu1G_AkNM*z?TaW~e(?|YpbqwbnC*+} z){jW|NbQ;2`dV~}uPpmVxxZpm4o-cWJ9-_J&zekCNr9lNvl_#XTChhzFh~G3ZSB0^ zES>j+b^J2Seuf!|?c$673=5Rih@{i6ZR1t*sY(iOCGH0 zlsgT;j<3*I{8#160r^%ArUEz(QCT&ty)7vCc;2S)wJG%3DL5(E--7Cnj;?RP|4`JZ zqq535e06;D*#Fy;qR!8cD?S?MrxyEbibuQxXFcR0|zII4U-UE867BJivU)MgBn<2;ze& zj0@yo2xIvyM*CTudsYm?W{ZL(NT4LFcM?V>2RnU}fF#6^DqF-F{OEh54~iA` z!?Qj>>_BYXoPe=#`kh}SBh)>9W%Mo?!^DbRGSVjp|1pOg(F7~hgh1K^cff>1x#yi? z4w1gXlyYC&Y;$KX>ep-2w)oWzSy- zKf-E|utxYk1RL6fFdn`085ymH)i%NT1E*gNykFQ9SbYFk5SD z1%SM0`{jQmvoT!GOYLTKE`72kxMmrf6qb#YU@Vi+#nbzJsE~t;5wHf)%suVmnEYx2 z_*tP<8zj*%$<6Xm7|1&(?J^9jCFIk{*uSGuB$nz}tGlepOTuE>n-X!DxZ8{gG)(GZ z4Ag)tey5BANf2lVqjZx$ehbBGs~4ARlEyV%sI?MPe$FeFQi=GP@J7AM^IJhIE=l$X z6$^`&Sl-H2ZF}s*UDzF#R=uSgfuRBb(a=iD`?_juFPHnJ$sS>>=AgP8uW;OjUpZ{$u}`ERjOy>IXL6jLBP$ap=bX$7TaFD^t<6*gHF zVNMn4ZqNNN0G1$_k^oUltOHFt2af}EpR~kwoEum(Hf2-bmZF8Tn@boYfkpy+--){6 zs&F6(Av+8aF)>mVv z;O&HoG|4xH%UCO`Mrd_HD5CvoU$6fWzE#B^Z@$a@b=1Tw?VZoMR<)XaFSk2h>xkQ8 zAhEAI%upcfb{&_2N89Lq+owH%?!zcn{FV7oWM8a^iE-}qPkA4v(={Uvg&}15u;XhQ5kPxp_C5lavEmQS_$tE2c$hIGQ(kNhVT4U1ESKq&bRcS*xsC0_W` z-MhXj+2=Bcr+!2`ILCzGbo#sbYExBDAi7f1RAF2HUt=~ltm7Q?@r)h#qiq_q-}N?W6W-4K=1V*Y zBG{*=mEE+4UMUW#>>P+wZU&dPj2>9d4BCC@yaR zSh8eUEI{(k{lCvJ9Q|Z)G9)u0FJ+L5@fEl#la&XH{3vjJ_?ZNuryg#5X_p<*dIiZn z_7-I_X zExK-x1Dw}4^IkPg%TMbmf0&II-^OY9)IogK{BR&U=Sq0i(mrM0JBu&-s5DP2$|ni$ zWq3$xocem=k!1)nv*N=8@*gMG|IChC&_2y;y9a_PzQ(vDQk%vY@Czoy(aFS-5IV~Q z$_xJZQ&N>*>VW7?`?MbBu6BG99zqRZ$FT7^Zw>`g!#R+BrF}BZdI_S(9BWt5{w&UH z+x>0V_295pWYw!lY+*w7?yN(0L0JKJ>BCfmS(4!~$gpTe%^WHZ;Xa%<$@+LQ{Vmvy z*!5RXUGEc}pvGS z(emT%hVw*;>3~j2Z__T1h#Yg1o5zSUorSi>S*CLHiTenqe}c10O9Qa$|Li={?!tKg zk9{vUOv8UY?rN0xRQ>rLcgS2PgnL*R5Tv4gyWCJqf|*J}iH5{KkOWJrBHcO>5N#rJ zN&L?}_I+m()!qqiITv0a7p*1t?W@OpG=)JlMGiH6C;gvyk4CYJCNpS;4Pk~2zAnM% i4FAZW{n70P0nqP+!-a@9fGJS<*w|2MX+Nn*qy8_49WaRi diff --git a/arbeit/Thesis.synctex(busy) b/arbeit/Thesis.synctex(busy) deleted file mode 100644 index e69de29..0000000 diff --git a/arbeit/Thesis.tex b/arbeit/Thesis.tex index 1df4b83..a6b2023 100644 --- a/arbeit/Thesis.tex +++ b/arbeit/Thesis.tex @@ -4,7 +4,7 @@ %% Parameter - Hier auf die eigene Arbeit anpassen %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\dokumententyp}{Studienarbeit} +\newcommand{\dokumententyp}{Seminararbeit} \newcommand{\abgabedatum}{\today} \newcommand{\ort}{Paderborn} \newcommand{\koorperationsunternehmen}{FHDW} diff --git a/arbeit/chapter/Einleitung.tex b/arbeit/chapter/Einleitung.tex index 98abf46..27f8f46 100644 --- a/arbeit/chapter/Einleitung.tex +++ b/arbeit/chapter/Einleitung.tex @@ -16,7 +16,7 @@ erklärt. Im nächsten Kapitel wird gezeigt, wie mit InfluxDB gearbeitet werden kann. Dazu wird das für InfluxDB wichtige Line Protokoll vorgestellt. Außerdem wird gezeigt, wie die abgerufenen Daten mit InfluxDB -visualisiert werden können. Als Daten werden die Wetterdaten das \gls{DWD} genutzt, welche auch in diesem +visualisiert werden können. Als Daten werden die Wetterdaten des \gls{DWD}s genutzt, welche auch in diesem Kapitel erklärt und vorgestellt werden. Im letzten Kapitel folgt eine kurze Zusammenfassung der Arbeit und der wichtigsten Informationen diff --git a/arbeit/chapter/Grundlagen.tex b/arbeit/chapter/Grundlagen.tex index a31da0c..1383a9c 100644 --- a/arbeit/chapter/Grundlagen.tex +++ b/arbeit/chapter/Grundlagen.tex @@ -3,7 +3,7 @@ In diesem Kapitel werden die Grundlagen von \gls{TSDB} und Time Series Data erklärt. \gls{TSDB} gehört zu den \gls{NoSQL} Datenbanken und ist besonders darauf optimiert, mit Time Series Data zu -arbeiten. Dadurch können sie große Mengen an Time Series Data verarbeiten, durchsuchen und speichern.\footnote{\cite[vgl.][]{ComputerWeekly}} +arbeiten. Dadurch kann sie große Mengen an Time Series Data verarbeiten, durchsuchen und speichern.\footnote{\cite[vgl.][]{ComputerWeekly}} \subsection{Time Series Data} @@ -16,7 +16,7 @@ Time Series Data können gut daran erkannt werden, dass die Zeit eine wichtige A Manchmal ist es nicht notwendig, alle Daten zu erfassen. Zum Beispiel wird in vielen Anwendungen nur der letzte Login gespeichert. Mehr ist auch für die Funktion nicht notwendig. Allerdings können zusätzliche Informationen gewonnen werden, wenn nicht nur der letzte Datenpunkt, sondern die Veränderung über einen Zeitraum aufgezeichnet wird. -So kann zum Beispiel festgestellt werden, wie oft und wann sich der Kunde einloggt hat und ob es dabei ein Muster gibt. Anhand dieser Daten können Kunden +So kann zum Beispiel festgestellt werden, wie oft und wann sich der Kunde eingeloggt hat und ob es dabei ein Muster gibt. Anhand dieser Daten können Kunden dann kategorisiert werden.\footnote{\cite[vgl.][]{DataScienceTeam2020}} Eine weitere Besonderheit von Time Series Data ist, dass sie sich nicht verändern. Wenn die Daten einmal erfasst wurden, wird an ihnen nichts mehr verändert. @@ -24,17 +24,17 @@ Es werden nur neue Daten hinzugefügt.\footnote{\cite[vgl.][]{SamFangman2019}} \subsection{{Aufbau von Time Series Datenbanken}} -\gls{TSDB} ist darauf ausgelegt, Key Value Paare zu speichern. Der Key in einem Key Value Datensatz ist ein +\gls{TSDB} sind darauf ausgelegt, Key Value Paare zu speichern. Der Key in einem Key Value Datensatz ist ein Wert, über den die Value referenziert wird. Im Value Teil werden die Daten zum dazugehörigen Key gespeichert. Der Wert des Value kann ein primitiver Datentyp sein oder auch ein Objekt, das in einen primitiven Datentyp umgewandelt worden ist. \footnote{\cite[vgl.][]{Key-Value}} Ein Datenpunkt in einer Time Series Database besteht aus mehreren Key Value Paaren. Einige dieser Key Value Paare sind sogenannte Tags. -Diese Tags sind Werte, die sich zwischen den Datenpunkten nicht ändern, wie zum Beispiel die Position eines Sensors oder die Kundenummer +Diese Tags sind Werte, die sich zwischen den Datenpunkten nicht verändern, wie zum Beispiel die Position eines Sensors oder die Kundenummer eines Kunden, der sich gerade eingeloggt hat. Anhand dieser Tags können die Datenpunkte durchsucht werden. Die eigentlichen Messwerte des Sensors oder andere Daten, die erfasst werden sollen, werden auch als Key Value Paar gespeichert. Zum Beispiel wird als Name -\glqq Temperatur\grqq{} und als Wert \glqq 25,2\grqq{} angeben. Ein Datenpunkt kann mehrere Messwerte haben. Außerdem wird jeder Datenpunkt mit einem Timestamp +\glqq Temperatur\grqq{} und als Wert \glqq 25,2\grqq{} angegeben. Ein Datenpunkt kann mehrere Messwerte haben. Außerdem wird jeder Datenpunkt mit einem Timestamp versehen, nach welchem er indexiert wird.\footnote{\cite[vgl.][]{hazelcast}} Eine gute Veranschaulichung, wie die Daten in einer \gls{TSDB} aufgebaut sind, zeigt das InfluxDB Line Protokoll in \cref{list:lineproto}. %https://hazelcast.com/glossary/time-series-database/ @@ -65,7 +65,7 @@ So können Datenbanken wie MongoDB, Redis, Teradata und Couchbase mit Time Serie auf Platz 29.\footnote{\cite[vgl.][]{dbranking}} Allerdings haben Datenbanken, die nur auf das Verarbeiten von Time Series Data ausgelegt sind, deutliche Performance Vorteile -gegenüber Multi Model Datenbanken. In einem Vergleich von InfluxDB und MongoDB, hat InfluxDB eine 2,4 mal bessere +gegenüber Multi-Model Datenbanken. In einem Vergleich von InfluxDB und MongoDB, hat InfluxDB eine 2,4 mal bessere Schreibperformance als MongoDB und ist beim Lesen sogar 5,7 mal schneller. InfluxDB benötigt außerdem 20 mal weniger Speicherplatz auf der Festplatte, um die gleiche Menge an Daten zu speichern.\footnote{\cite[vgl.][]{InfluxDBvsMongo}} @@ -85,7 +85,7 @@ Speicherplatz auf der Festplatte, um die gleiche Menge an Daten zu speichern.\fo \subsection{{Entwicklungsumgebung}} -Um mit InfluxDB zu arbeiten, wird eine Umgebung zum Ausführen von Docker Containern benötigt, in welchen InfluxDB und Jupyter Notebooks betrieben werden können. +Um mit InfluxDB zu arbeiten, wird eine Umgebung zum Ausführen von Docker Containern benötigt, in welcher InfluxDB und Jupyter Notebooks betrieben werden können. Der eigentliche Code wird dann in Jupyter Notebooks mit Python entwickelt. Die Grundlagen über die eingesetzten Tools und Techniken werden in diesem Kapitel grob erläutert. diff --git a/arbeit/chapter/InfluxDB.tex b/arbeit/chapter/InfluxDB.tex index 0215f03..302db17 100644 --- a/arbeit/chapter/InfluxDB.tex +++ b/arbeit/chapter/InfluxDB.tex @@ -1,15 +1,14 @@ \section{{InfluxDB}} InfluxDB ist eine in Go geschriebene Open-Source \gls{TSDB}, die darauf ausgelegt ist, mit einer großen Menge an Time Series Data zu arbeiten.\footnote{\cite[vgl.][]{dbranking}} -Im weiteren Verlauf dieses Kapitels, wird am Beispiel von Wetterdaten gezeigt, wie mit InfluxDB gearbeitet wird. InfluxDB stellt für die Integration in -eigene Anwendungen ein \gls{HTTP} \gls{API} zur Verfügung, für die es in vielen Programmiersprachen Client Librarys gibt. Außerdem wird ein Webinterface und ein \gls{CLI} bereitgestellt. -\footnote{\cite[vgl.][]{InfluxAPI}} +Im weiteren Verlauf dieses Kapitels wird am Beispiel von Wetterdaten gezeigt, wie mit InfluxDB gearbeitet wird. InfluxDB stellt für die Integration in +eigene Anwendungen ein \gls{HTTP} \gls{API} zur Verfügung, für welches es in vielen Programmiersprachen Client Librarys gibt. Außerdem wird ein Webinterface und ein \gls{CLI} bereitgestellt.\footnote{\cite[vgl.][]{InfluxAPI}} \subsection{{InfluxDB Installation}} Bevor InfluxDB genutzt werden kann, muss es als erstes installiert werden. Am einfachsten ist dies über Docker möglich. Dazu ist es notwendig, dass Docker und Docker Compose auf dem System installiert sind. -Mit Docker Desktop lassen sich die beide Tools am einfachsten installieren. Im Anhang dieser Arbeit befindet sich im Ordner Docker eine Docker Compose Datei mit dem Namen \glqq docker-compose.yml\grqq{}. +Mit Docker Desktop lassen sich die beide Tools am einfachsten installieren. Im Anhang dieser Arbeit befindet sich im Ordner \glqq Docker\grqq{} eine Docker Compose Datei mit dem Namen \glqq docker-compose.yml\grqq{}. Zum starten der benötigten Container ist es am einfachsten, mit einem Terminal (Powershell, xterm usw.) in den Docker Ordner zu wechseln und den Befehl \glqq docker compose up -d\grqq{} auszuführen. Jetzt beginnt Docker damit, die notwendigen Images herunterzuladen und zu bauen. Wenn der Befehl ohne Fehler ausgeführt worden ist, wurde InfluxDB erfolgreich installiert und kann über die \gls{URL}:\ \url{http://localhost:8086} aufgerufen werden. Die Login Daten sind als Umgebungsvariable in Docker Compose definiert und lauten: \glqq admin\grqq{} \glqq e1LjSYaFbzbJeIBC\grqq{}. @@ -22,14 +21,13 @@ zugegriffen werden. Das Passwort lautet \glqq fhdw\grqq{}. Im Ordner \glqq work\ In InfluxDB werden Daten immer in Buckets gespeichert. Um Daten hochzuladen, muss zunächst ein Bucket angelegt werden. Dazu gibt es zwei Möglichkeiten. Die einfachste ist es, über das Web \gls{UI} von InfluxDB einen neuen Bucket anzulegen. Dazu muss nach dem Login der Navigationspunkt \glqq Data\grqq{} und der Reiter \glqq Buckets\grqq{} ausgewählt werden. Hier kann dann mit dem Button \glqq Create Bucket\grqq{} ein neuer Bucket angelegt werden. Dabei kann noch eine -Lebensdauer für die Daten ausgewählt werden, nach welcher die jeweiligen Datenpunkte gelöscht werden. -\footnote{vgl. \cref{fig:dashboard}, \cref{fig:load-data-source}, \cref{fig:load-data-bucket}, \cref{fig:load-data-add-bucket}} +Lebensdauer für die Daten ausgewählt werden, nach welcher die jeweiligen Datenpunkte gelöscht werden.\footnote{vgl. \cref{fig:dashboard}, \cref{fig:load-data-source}, \cref{fig:load-data-bucket}, \cref{fig:load-data-add-bucket}} %\subsection{Line Protokoll} Mit oder ohne diese Überschrift? Daten werden immer nach dem InfluxDB Line Protokoll formatiert an die Datenbank gesendet. Das Protokoll ist wie in \cref{list:lineproto} -dargestellt, aufgebaut. Im ersten Teil des Line Protokolls wird der Name des Datenpunktes angegeben. Das kann zum Beispiel der Name des Sensors sein oder -der Ort, an dem der Messwert aufgenommen wurde. Es ist Wichtig, dass Groß- und Kleinschreibung beachtet wird und Unterstriche nicht +dargestellt aufgebaut. Im ersten Teil des Line Protokolls wird der Name des Datenpunktes angegeben. Das kann zum Beispiel der Name des Sensors sein oder +der Ort, an dem der Messwert aufgenommen wurde. Es ist wichtig, dass Groß- und Kleinschreibung beachtet wird und Unterstriche nicht genutzt werden dürfen. Sonderzeichen müssen mit einem Backslash maskiert werden. Nach dem Namen kommen, getrennt durch ein Komma, die Tags des Datenpunktes. Tags werden indexiert und dazu genutzt, Datenpunkte zu durchsuchen. Auch Tags werden als Key Value Paar angegeben. Hier sollen Metadaten wie zum Beispiel der Standort des Sensors oder der Name des Servers eingetragen werden, die zum Datenpunkt gehören. Die Messwerte sind mit einem @@ -61,7 +59,7 @@ Mit einem Read/Write Token kann wie in \cref{fig:load-data-add-token} zu sehen a \subsection{{Daten abrufen und visualisieren}} Um Daten aus InfluxDB abzurufen, wird die funktionale Sprache Flux genutzt. Flux wurde für das abfragen, analysieren und verarbeiten von Daten entwickelt.\footnote{\cite[vgl.][]{InfluxFlux}} -Flux kann unter anderem im influxDB Webinterface oder über die InfluxDB \gls{API} sowie über den InfluxDB \gls{CLI} CLient ausgeführt werden.\footnote{\cite[vgl.][]{InfluxExecQuery}} +Flux kann unter anderem im InfluxDB Webinterface oder über die InfluxDB \gls{API}, sowie über den InfluxDB \gls{CLI} Client ausgeführt werden.\footnote{\cite[vgl.][]{InfluxExecQuery}} %https://docs.influxdata.com/influxdb/cloud/query-data/execute-queries/. Am einfachsten ist es, Flux mit Code Beispielen zu erklären. Die Zeilenangaben in diesem Kapitel beziehen sich auf das \cref{list:influxFlux}. @@ -70,9 +68,9 @@ In Zeile 1 wird dazu das \glqq from()\grqq{} Statement genutzt, um den Bucket mi erlaubt Flux keine Abfragen ohne die Angabe eines Zeitbereiches, der die Datenmenge einschränkt. Dieser Bereich kann mithilfe des \glqq range()\grqq{} Statements ausgewählt werden, wobei es zwei verschiedene Möglichkeiten gibt. Die erste ist, mithilfe des \glqq start:\grqq{} Parameters die Zeit relativ zum Zeitpunkt der Ausführung anzugeben. In Zeile 2 des Beispiels wird der Zeitbereich auf die letzte Stunde festgelegt. -Zusätzlich zum Startparameter kann auch der Stop-Parameter angeben werden, welcher wie in Zeile 5 zu sehen, angibt, bis wann die Daten +Zusätzlich zum Startparameter kann auch der Stop-Parameter angeben werden, welcher wie in Zeile 5 zu sehen angibt, bis wann die Daten abgerufen werden. In Zeile 5 würden die Daten von 14:00 bis 14:50 Uhr abgerufen werden, wenn die Abfrage um 15 Uhr verarbeitet wird. -Die zweite Möglichkeit ist es, den Zeitbereich mit absoluten Werten einzuschränken, was wie in Zeile 8 zu sehen, gemacht wird. +Die zweite Möglichkeit ist es, wie in Zeile 8 zu sehen, den Zeitbereich mit absoluten Werten einzuschränken. Zusätzlich zu den Zeitbereichen können auch weitere Filter auf die Daten angewendet werden. Dazu wird die Filterfunktion genutzt. Mit dieser Funktion wird über die Datenpunkte der Datenbank iteriert. Innerhalb dieser Funktion wird eine weitere Funktion als Parameter übergeben, welche die Daten filtert. Wenn die Funktion \glqq false\grqq{} zurückgibt, wird dieser Datenpunkt verworfen. Falls jedoch ein \glqq true\grqq{} zurückgegeben wird, werden @@ -81,7 +79,7 @@ die Daten weiter verarbeitet oder ausgegeben. Im Fall von Zeile 12 wird der Date und mit \glqq r.\_field\grqq{} nach dem Namen eines Messwertes gefiltert werden. Im letzten Schritt werden über die \glqq yield()\grqq{} Funktion die Daten ausgegeben. Das ist nur erforderlich, wenn mehrere Flux Abfragen zu einer kombiniert werden.\footnote{\cite[vgl.][]{InfluxFluxQuery}} %https://docs.influxdata.com/influxdb/cloud/query-data/get-started/query-influxdb/ -Alternativ können Flux Querys auch über den Query Builder im InfluxDB Web \gls{UI} erstellt werden.\footnote{\cite[vgl.][]{InfluxDBDataExplorer}} +Alternativ können Flux Querys auch über den Query Builder, wie in \cref{fig:query-builder} zu sehen, im InfluxDB Web \gls{UI} erstellt werden.\footnote{\cite[vgl.][]{InfluxDBDataExplorer}} Es ist nicht immer erforderlich, die Daten aus der Datenbank auszulesen, wenn diese visualisiert werden sollen. Mithilfe des InfluxDB Webinterface ist es möglich, Daten zu visualisieren. Vorher ist es allerdings notwendig, die zu visualisierenden Daten mithilfe eins Flux @@ -89,6 +87,7 @@ Query abzufragen. %bevor die Daten Visualisiert werden können müssen diese erst mithilfe eines Flux Query abgefragt werden. Dazu kann entweder selbst ein Query geschrieben werden oder der eingebaute Query Builder genutzt werden.\footnote{\cite[vgl.][]{InfluxDBDataExplorer}} Danach lassen sich die Daten als Graph, Heatmap, Histogramm, Scatterplot und weiteren Diagrammtypen anzeigen.\footnote{\cite[vgl.][]{InfluxDBGraph}} +Ein Beispiel ist in \cref{fig:influxdb-Graph} zu sehen. \subsection{Python Library} @@ -105,17 +104,17 @@ Was in die Variablen eingetragen werden muss, wird im Kapitel \glqq Daten einfügen\grqq{} %eventuell Link einfügen? beschrieben.\footnote{\cite[vgl.][]{InfluxAPIPythonClient}} -In Zeile neun bis 13 wird der Client mit den hinterlegten Variablen initialisiert. Danach folgt in Zeile 15 die +In den Zeilen neun bis 13 wird der Client mit den hinterlegten Variablen initialisiert. Danach folgt in Zeile 15 die Initialisierung des Write Clients. Als nächstes muss ein Datenpunkt erstellt werden, der in die Datenbank geschrieben werden kann. -Dieser wird in Zeile 17 bis 19 erstellt. An diesem Datenpunkt kann eine beliebige Menge an Tags und Datenfeldern +Dieser wird in den Zeilen 17 bis 19 erstellt. An diesem Datenpunkt kann eine beliebige Menge an Tags und Datenfeldern über die Methoden \glqq tag\grqq{} und \glqq field\grqq{} angehängt werden. Hier im Beispiel wird der Datenpunkt \glqq my\_measurement\grqq{} mit dem Tag \glqq location\grqq{} angelegt, -welcher den Wert \glqq Paderborn\grqq{} hat, und dem Messwert \glqq temperature\grqq{} mit dem Wert \glqq 25,3\grqq{}. In der letzten Zeile wird dann +welcher den Wert \glqq Paderborn\grqq{} hat, und den Messwert \glqq temperature\grqq{} mit dem Wert \glqq 25,3\grqq{}. In der letzten Zeile wird dann der Write Client dazu genutzt, um diesen Datenpunkt an die Datenbank zu senden. Um die so in die Datenbank geschriebenen Werte wieder abzurufen, kann so wie in \cref{list:influxPythonRead} vorgegangen werden. -Hier wird als erstes in Zeile 1 ein Query Client erstellt. Mit diesem Query Client kann dann wie in Zeile 2 bis 7 zu -sehen ein Flux Query ausgeführt werden. Zurückgegeben wird ein Flux Objekt mit einer Tabellenstruktur, die wie in Zeile 9 bis 11 -zu sehen, einfach mit einer Schleife verarbeitet werden kann. Um auf die Daten des Objekts zuzugreifen sind die wichtigsten Methoden hier beschreiben. +Hier wird als erstes in Zeile 1 ein Query Client erstellt. Mit diesem Query Client kann dann wie in den Zeilen zwei bis sieben zu +sehen ein Flux Query ausgeführt werden. Zurückgegeben wird ein Flux Objekt mit einer Tabellenstruktur, die wie in den Zeilen neun bis elf +zu sehen, einfach mit einer Schleife verarbeitet werden kann. Um auf die Daten des Objekts zuzugreifen, sind die wichtigsten Methoden hier beschreiben. Mit \glqq get\_measurement\grqq{} kann der Name eines Datenpunktes abgerufen werden. Zusätzlich kann mithilfe von \glqq get\_field\grqq{} und \glqq get\_value\grqq{} der Name und der Wert des Messwertes im Datenpunkt abgefragt werden. Zum abfragen der Zeit wird die Methode \glqq get\_time\grqq{} genutzt.\footnote{\cite[vgl.][]{InfluxAPIPythonClient}} @@ -135,7 +134,7 @@ des Messwertes im Datenpunkt abgefragt werden. Zum abfragen der Zeit wird die Me \subsubsection{{Wetterdaten Aufbau}} -Die Wetterdaten des \gls{DWD} können über den \gls{CDC} OpenData Bereich heruntergeladen werden. Hier werden die Wetterdaten über \gls{FTP} und \gls{HTTPS} zum Download +Die Wetterdaten des \gls{DWD}s können über den \gls{CDC} OpenData Bereich heruntergeladen werden. Hier werden die Wetterdaten über \gls{FTP} und \gls{HTTPS} zum Download angeboten. Unter der \gls{URL} \url{https://www.dwd.de/DE/leistungen/cdc/cdc_ueberblick-klimadaten.html} wird eine gute Übersicht über die zum Download angebotenen Daten geboten. Die Werte für die aktuelle Lufttemperatur können über \url{https://opendata.dwd.de/climate_environment/CDC/observations_germany/climate/10_minutes/air_temperature/now/} @@ -145,7 +144,7 @@ abgerufen werden. Aktuell werden auf der Webseite für die aktuelle Lufttemperatur circa 480 Dateien zum Download angeboten. Die meisten dieser Dateien entsprechen jeweils einer Messstation und je nach Tageszeit kann deswegen die Menge der Zeilen in der Datei variieren, weil immer um 00:00 Uhr eine neue Datei angefangen wird. -In den \gls{ZIP} Dateien befinden sich außerdem Metadaten über die Messtationen. Die eigentlichen Daten sind als \gls{CSV} formatiert und sehen aus wie in Listing~\ref{list:wetter_csv} gekürzt dargestellt wird. +In den \gls{ZIP} Dateien befinden sich außerdem Metadaten über die Messstationen. Die eigentlichen Daten sind als \gls{CSV} formatiert und sehen aus wie in Listing~\ref{list:wetter_csv} gekürzt dargestellt wird. In der \gls{CSV} Datei gibt es 9 Felder. Der Inhalt dieser Felder wird in \cref{tab:csv-explenation} beschreiben. %Eventuell kürzen wenn zu viele Seiten @@ -194,8 +193,8 @@ eor & END OF RECORD" Bedeutet die Zeile ist zu Ende. \\ In der Datei \glqq zehn\_now\_tu\_Beschreibung\_Stationen.txt\grqq{} werden die Wetterstationen beschrieben. Diese Datei ist nicht als \gls{CSV} Datei formatiert, sondern als Tabelle und erhält Daten über die Wetterstationen. Die Daten der Stationen in der heruntergeladenen Textdatei stimmen mit den Daten der hauptamtlichen Messnetzkarte überein. -Allerdings enthält die Textdatei nicht alle Stationen, sondern nur Stationen für die auch Messwerte im Datensatz hinterlegt sind. Die Bedeutung der einzelnen -Spalten der Tabelle werden in der \cref{tab:file-stations} beschrieben. +Allerdings enthält die Textdatei nicht alle Stationen, sondern nur Stationen für die auch Messwerte im Datensatz hinterlegt sind. Die Bedeutungen der einzelnen +Spalten der Tabelle werden in \cref{tab:file-stations} beschrieben. \begin{table}[hbt] \centering @@ -227,7 +226,7 @@ Spalten der Tabelle werden in der \cref{tab:file-stations} beschrieben. Um die Daten auswerten zu können, müssen diese als erstes heruntergeladen und entpackt werden. Dazu wird mithilfe von BeautifulSoup aus der \gls{HTML} Seite des \gls{DWD} für jede Datei eine \gls{URL} ausgelesen. Die so gewonnen \gls{URL}s können dann mithilfe einer Schleife heruntergeladen werden. -Um die Messwerte eine Station zuordnen zu können, wird als erstes die Datei mit den Stationen verarbeitet. Für jede Station wird ein Objekt erstellt und in ein +Um die Messwerte einer Station zuordnen zu können, wird als erstes die Datei mit den Stationen verarbeitet. Für jede Station wird ein Objekt erstellt und in einem \glqq dictionary\grqq{} gespeichert. Dadurch kann in diesem \glqq dictionary\grqq{} einfach über die \glqq STATIONS\_ID\grqq{} die passende Station gefunden werden. Weil diese Datei allerdings nicht \gls{CSV} formatiert ist, muss die Datei auf eine andere Art ausgewertet werden. Um die einzelnen Felder aus einer Zeile auszulesen, wird immer so lange gelesen bis wieder ein bestimmte Anzahl von Leerzeichen hintereinander erkannt worden ist. Die Zeichen zwischen den Leerzeichen sind dann ein ausgelesenes Feld. @@ -246,15 +245,15 @@ Zum bestimmen der Höchst- und Tiefsttemperatur, werden die beiden Variablen \glqq min\grqq{} und \glqq max\grqq{} definiert, welche mit einem sehr hohen bzw. einem sehr niedrigem Wert initialisiert werden. Beim durchlaufen der Schleife wird immer der aus der Datenbank stammende Wert mit der Variable \glqq min\grqq{} und \glqq max\grqq{} verglichen. Wenn der Wert größer als \glqq max\grqq{} ist, wird \glqq max\grqq{} auf den neuen größten Wert gesetzt und wenn der Wert kleiner als \glqq min\grqq{} ist, wird \glqq min\grqq{} auf den neuen kleinsten Wert gesetzt. So beinhaltet die Variable \glqq max\grqq{} -nach dem durchlaufen den höchsten und die Variable \glqq min\grqq{} den niedrigsten Wert. Für das Bestimmen des Durchschnittswertes muss eine Zähler +nach dem Durchlaufen den höchsten und die Variable \glqq min\grqq{} den niedrigsten Wert. Für das Bestimmen des Durchschnittswertes muss eine Zähler Variable, in diesem Fall \glqq i\grqq{}, und eine Summen Variable \glqq sum\grqq{} erstellt werden. Die Zähler Variable wird mit jedem Schleifendurchlauf um eins hochgezählt. -Zusätzlich wird die Summen Variable mit dem Wert innerhalb der Schleife addiert. Zum bestimmen des Durchschnittswertes muss jetzt nur noch +Zusätzlich wird die Summen Variable mit dem Wert innerhalb der Schleife addiert. Zum Bestimmen des Durchschnittswertes muss jetzt nur noch die Summe, in diesem Fall die Variable \glqq sum\grqq{} durch die Anzahl der Elemente, hier \glqq i\grqq{}, geteilt werden. Das Ergebnis ist der Tagesmittelwert. Um die Daten in der Datenbank zu visualisieren, kann die in InfluxDB eingebaute Graph Funktion genutzt werden. Über den Query Builder -können wie in \cref{fig:query-builder} zu sehen, Messtationen ausgewählt werden, zu denen Graphen anzeigen werden sollen. Außerdem +können wie in \cref{fig:query-builder} zu sehen, Messstationen ausgewählt werden, zu denen Graphen anzeigen werden sollen. Außerdem kann hier auch ausgewählt werden, welche Felder angezeigt werden sollen. Mit einem Klick auf \glqq Submit\grqq{} wird ein Graph, wie in -\cref{fig:influxdb-Graph} zu sehen, angezeigt. In diesem Graphen werden die Temperaturen von den Messtationen auf Sylt(pink) und in +\cref{fig:influxdb-Graph} zu sehen, angezeigt. In diesem Graphen werden die Temperaturen von den Messstationen auf Sylt(pink) und in Bad Lippspringe(blau) am 27.06.2022 angezeigt. Weitere Bespiele für das Verarbeiten der Wetterdaten können im Jupyter Notebook gefunden werden. \ No newline at end of file diff --git a/arbeit/chapter/Zusammenfassung.tex b/arbeit/chapter/Zusammenfassung.tex index 25fc3ca..484787b 100644 --- a/arbeit/chapter/Zusammenfassung.tex +++ b/arbeit/chapter/Zusammenfassung.tex @@ -24,6 +24,6 @@ als Beispiel genutzten Wetterdaten heruntergeladen, importiert und verarbeiten w \section{Schlussfolgerung und Fazit} \gls{TSDB} eignen sich sehr gut für die Speicherung von Time Series Data und besonders für die Verarbeitung von -großen Datenmengen. Dadurch, dass immer mehr Daten erfasst werden, ist es abzusehen, dass sich \gls{TSDB}s immer weiter +großen Datenmengen. Dadurch, dass immer mehr Daten erfasst werden, ist es abzusehen, dass sich \gls{TSDB} immer weiter verbreiten werden. Es bietet sich an, für IOT Sensoren oder die Erfassung von Servermetriken und anderer Time Series Data, auf \gls{TSDB} zu setzen. \ No newline at end of file