241 lines
5.8 KiB
Plaintext
241 lines
5.8 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "6801b26f-4bf6-46c0-8584-798ede2d0ff2",
|
|
"metadata": {},
|
|
"source": [
|
|
"# InfluxDB Grundlagen"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "759f9eb6-5629-4e87-8c6a-043bcafc4f55",
|
|
"metadata": {},
|
|
"source": [
|
|
"Bevor mit InfluxDB gearbeitet werden kann muss als erstes die client library importiert werden. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "43cf5e5c-9542-47ea-9205-89f97a217c51",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from datetime import datetime\n",
|
|
"\n",
|
|
"from influxdb_client import InfluxDBClient, Point, WritePrecision\n",
|
|
"from influxdb_client.client.write_api import SYNCHRONOUS"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "03668637-f4eb-422d-8d36-e59b13e75ad1",
|
|
"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 geachtete werden die URL des Doker Conteiners zu nutzen in dem die Datenbank ausgeführt wird. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "d6ae2ed0-3363-420f-81d5-56050591a50e",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"token = \"klyDN4DRFvnRrbmNAEvTXdbP7goon9DBfSxN_1X2Us6AFFp6G5T0QNwgf7ucrRExwZomzhPInj68BjPw2gwXOQ==\"\n",
|
|
"org = \"test-org\"\n",
|
|
"bucket = \"test-bucked\"\n",
|
|
"url = \"http://influxdb:8086\"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e4390ee6-e32c-4ef9-9e41-3bb47ee827fb",
|
|
"metadata": {},
|
|
"source": [
|
|
"Jetzt wird der InfluxDB Client erstellt."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "0a3d1adf-5c17-4aa6-8296-bd6bf0d78dc8",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"client = InfluxDBClient(\n",
|
|
" url=url, \n",
|
|
" token=token,\n",
|
|
" org=org\n",
|
|
") "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ee8de7a5-722f-4b03-ab00-8aeea2f1a596",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Daten in InfluxDB eintragen"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f6b75431-3767-46c4-85cd-baf0e772a9e3",
|
|
"metadata": {},
|
|
"source": [
|
|
"Um Daten zu schreiben wird ein Write Client genutzt. Dieser kann aus dem Client erstellt werden."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "9015aa31-9bee-40db-b604-243c8f0b6ee9",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"write_api = client.write_api(write_options=SYNCHRONOUS)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "038a43f6-4e70-407f-b7fe-9622178a7dbc",
|
|
"metadata": {},
|
|
"source": [
|
|
"Zuguterletzt kann dann ein Datenpunkt mit Demodaten hochgeladen werden."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "7a557626-aaba-4ef4-8b4d-5ff2dd2840ef",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"p = Point(\"my_measurement\").tag(\"location\", \"Prague\").field(\"temperature\", 25.3)\n",
|
|
"write_api.write(bucket=bucket, org=org, record=p)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "920bad93-6b76-4148-8e45-51954d895786",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Daten aus InfluxDB abrufen"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "94576801-e533-43f7-a12b-af435b0562a1",
|
|
"metadata": {},
|
|
"source": [
|
|
"Ähnlich wie zum schreiben von Daten wird für das abrufen von Daten ein extra query Client benötigt."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "59aaa184-b140-432d-8132-cbb179ce4543",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"query_api = client.query_api()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "237b7c4c-b92d-4a4b-9864-38c96be54967",
|
|
"metadata": {},
|
|
"source": [
|
|
"Um die abzurufenden Daten festzulegen wird ein Flux Querry erstellt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "cb28ce0d-5d9f-4090-a136-6fa7c8787974",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"query = 'from(bucket:\"'+ bucket +'\")\\\n",
|
|
"|> range(start: -10m)\\\n",
|
|
"|> filter(fn:(r) => r._measurement == \"my_measurement\")\\\n",
|
|
"|> filter(fn: (r) => r.location == \"Prague\")\\\n",
|
|
"|> filter(fn:(r) => r._field == \"temperature\" )'"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "140b5a02-f4d6-4b04-bd36-6ab8102a07fc",
|
|
"metadata": {},
|
|
"source": [
|
|
"Dieser query kann dann mit dem query client ausgeführt werden."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"id": "34975883-fa02-469f-8a2a-cc3464ae6c92",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"result = query_api.query(org=org, query=query)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "9076f045-e22d-4923-93d0-abcfd1cc5251",
|
|
"metadata": {},
|
|
"source": [
|
|
"Mithilfe einer Schleife können die Datenpunkte jetzt durchgegangen werden. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"id": "1c689c54-8215-41e3-97ca-6b6eed76d0fc",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"[('temperature', 25.3), ('temperature', 25.3)]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"results = []\n",
|
|
"for table in result:\n",
|
|
" for record in table.records:\n",
|
|
" results.append((record.get_field(), record.get_value()))\n",
|
|
"\n",
|
|
"print(results)"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.10.4"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|