{ "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": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>_time</th>\n", " <th>_value</th>\n", " <th>diff_value</th>\n", " <th>diff_time</th>\n", " </tr>\n", " <tr>\n", " <th>tag</th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>203</th>\n", " <td>2021-02-13 01:00:08.576459+00:00</td>\n", " <td>1397.19</td>\n", " <td>1.25</td>\n", " <td>1 days 00:00:00.312928</td>\n", " </tr>\n", " <tr>\n", " <th>205</th>\n", " <td>2021-02-13 01:00:08.576459+00:00</td>\n", " <td>185.72</td>\n", " <td>1.77</td>\n", " <td>1 days 00:00:00.312928</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "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": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>_time</th>\n", " <th>_value</th>\n", " <th>tag</th>\n", " <th>diff_value</th>\n", " <th>diff_time</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>1</th>\n", " <td>2021-02-11 17:53:55.881142+00:00</td>\n", " <td>1395.56</td>\n", " <td>203</td>\n", " <td>3.89</td>\n", " <td>0 days 16:53:48.762028</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>2021-02-12 01:00:08.263531+00:00</td>\n", " <td>1395.94</td>\n", " <td>203</td>\n", " <td>0.38</td>\n", " <td>0 days 07:06:12.382389</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>2021-02-13 01:00:08.576459+00:00</td>\n", " <td>1397.19</td>\n", " <td>203</td>\n", " <td>1.25</td>\n", " <td>1 days 00:00:00.312928</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>2021-02-11 17:53:55.881142+00:00</td>\n", " <td>183.62</td>\n", " <td>205</td>\n", " <td>2.51</td>\n", " <td>0 days 16:53:48.762028</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>2021-02-12 01:00:08.263531+00:00</td>\n", " <td>183.95</td>\n", " <td>205</td>\n", " <td>0.33</td>\n", " <td>0 days 07:06:12.382389</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>2021-02-13 01:00:08.576459+00:00</td>\n", " <td>185.72</td>\n", " <td>205</td>\n", " <td>1.77</td>\n", " <td>1 days 00:00:00.312928</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "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 }