{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "https://influxdb-client.readthedocs.io/en/latest/usage.html#id4\n", "\n", "or generate source code from Web UI: `Load Data` -> `Source`\n", "\n", "## Query\n", "Flux: https://docs.influxdata.com/influxdb/v2.0/query-data/flux/query-fields/" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import re, os\n", "\n", "path = '/data/conf/init.sh' # influxdb_token=... (optional)\n", "\n", "if os.path.exists(path):\n", " with open(path,'r',encoding='utf-8') as f:\n", " content = f.read()\n", " token = re.search(\"(?<=influxdb_token=).*\", content).group(0)\n", "else:\n", " token = input(\"influxdb_token=\")\n", " \n", "from influxdb_client import InfluxDBClient\n", "\n", "client = InfluxDBClient(url=\"http://192.168.88.21:8086\", token=token, org=\"ferro\")\n", "query_api = client.query_api() " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "\n", "query='''\n", "from(bucket: \"home\")\n", " |> range(start: -3d)\n", " |> filter(fn: (r) => r[\"_measurement\"] == \"度数\") \n", " |> filter(fn: (r) => r[\"_field\"] == \"当前\") \n", " |> filter(fn: (r) => r[\"tag\"] == \"203\" or r[\"tag\"] == \"205\" )\n", " |> keep(columns: [\"_time\", \"_value\", \"tag\"])\n", "'''\n", "\n", "query = ''.join([ line for line in query.splitlines() if not line.startswith('#') ])\n", "\n", "df = client.query_api().query_data_frame(query=query).drop(['result', 'table'], axis=1)\n", "df['_time'] = pd.to_datetime(df['_time'], format='%Y-%m-%d %H:%M:%S.%f%z') # https://strftime.org/\n", "df['tag'] = df['tag'].astype('string')\n", "\n", "df['diff_value'] = df.groupby(['tag'])['_value'].diff().fillna(0)\n", "df['diff_time'] = df.groupby(['tag'])['_time'].diff()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "_time datetime64[ns, UTC]\n", "_value float64\n", "tag string\n", "diff_value float64\n", "diff_time timedelta64[ns]\n", "dtype: object" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.dtypes" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
_time_valuediff_valuediff_time
tag
2032021-02-13 01:00:08.576459+00:001397.191.251 days 00:00:00.312928
2052021-02-13 01:00:08.576459+00:00185.721.771 days 00:00:00.312928
\n", "
" ], "text/plain": [ " _time _value diff_value \\\n", "tag \n", "203 2021-02-13 01:00:08.576459+00:00 1397.19 1.25 \n", "205 2021-02-13 01:00:08.576459+00:00 185.72 1.77 \n", "\n", " diff_time \n", "tag \n", "203 1 days 00:00:00.312928 \n", "205 1 days 00:00:00.312928 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_last = df.groupby(['tag']).last()\n", "df_last" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
_time_valuetagdiff_valuediff_time
12021-02-11 17:53:55.881142+00:001395.562033.890 days 16:53:48.762028
22021-02-12 01:00:08.263531+00:001395.942030.380 days 07:06:12.382389
32021-02-13 01:00:08.576459+00:001397.192031.251 days 00:00:00.312928
52021-02-11 17:53:55.881142+00:00183.622052.510 days 16:53:48.762028
62021-02-12 01:00:08.263531+00:00183.952050.330 days 07:06:12.382389
72021-02-13 01:00:08.576459+00:00185.722051.771 days 00:00:00.312928
\n", "
" ], "text/plain": [ " _time _value tag diff_value \\\n", "1 2021-02-11 17:53:55.881142+00:00 1395.56 203 3.89 \n", "2 2021-02-12 01:00:08.263531+00:00 1395.94 203 0.38 \n", "3 2021-02-13 01:00:08.576459+00:00 1397.19 203 1.25 \n", "5 2021-02-11 17:53:55.881142+00:00 183.62 205 2.51 \n", "6 2021-02-12 01:00:08.263531+00:00 183.95 205 0.33 \n", "7 2021-02-13 01:00:08.576459+00:00 185.72 205 1.77 \n", "\n", " diff_time \n", "1 0 days 16:53:48.762028 \n", "2 0 days 07:06:12.382389 \n", "3 1 days 00:00:00.312928 \n", "5 0 days 16:53:48.762028 \n", "6 0 days 07:06:12.382389 \n", "7 1 days 00:00:00.312928 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_result = df[df.diff_time.notnull()]\n", "df_result" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.8.3" } }, "nbformat": 4, "nbformat_minor": 4 }