<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>InfluxDB on heppoko blog</title><link>https://blog-0847c6.gitlab.io/tags/influxdb/</link><description>Recent content in InfluxDB on heppoko blog</description><generator>Hugo -- gohugo.io</generator><language>ja-jp</language><lastBuildDate>Fri, 06 Jan 2023 00:00:00 +0900</lastBuildDate><atom:link href="https://blog-0847c6.gitlab.io/tags/influxdb/index.xml" rel="self" type="application/rss+xml"/><item><title>Grafana Cloud で InfluxDB v2 のデータを可視化する</title><link>https://blog-0847c6.gitlab.io/posts/2023/01/06/influxdb-cloud/</link><pubDate>Fri, 06 Jan 2023 00:00:00 +0900</pubDate><guid>https://blog-0847c6.gitlab.io/posts/2023/01/06/influxdb-cloud/</guid><description>&lt;p&gt;InfluxDB v2 ではそれ自体でダッシュボードの作成もできますが、まだまだ使いにくかったり細かい設定ができなかったりしたので、使い慣れている Grafana を使うことにしました。&lt;br&gt;
また、この機会に Grafana もオンプレミス版からクラウドサービスの Grafana Cloud に変更しました。&lt;/p&gt;
&lt;p&gt;Grafana Cloud へのサインアップ方法などは割愛します。&lt;/p&gt;
&lt;h2 id="データソースの設定"&gt;&lt;a href="#%e3%83%87%e3%83%bc%e3%82%bf%e3%82%bd%e3%83%bc%e3%82%b9%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;データソースの設定
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;サイドメニューから &lt;code&gt;Data Sources&lt;/code&gt; を選択します。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Add data source&lt;/code&gt; をクリックし、&lt;code&gt;InfluxDB&lt;/code&gt; をクリックします。&lt;/li&gt;
&lt;li&gt;InfluxDB の情報を入力します。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;InfluxDB Cloud の場合、&lt;code&gt;Query Language&lt;/code&gt; は &lt;code&gt;Flux&lt;/code&gt; を選択します。&lt;br&gt;
また、URL, トークン、バケット名が必要になるので、以下を参考に取得しておきます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://kuttsun.blogspot.com/2022/12/influxdb-cloud.html" target="_blank" rel="noopener"
 &gt;https://kuttsun.blogspot.com/2022/12/influxdb-cloud.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ダッシュボードパネルの作成"&gt;&lt;a href="#%e3%83%80%e3%83%83%e3%82%b7%e3%83%a5%e3%83%9c%e3%83%bc%e3%83%89%e3%83%91%e3%83%8d%e3%83%ab%e3%81%ae%e4%bd%9c%e6%88%90" class="header-anchor"&gt;&lt;/a&gt;ダッシュボード（パネル）の作成
&lt;/h2&gt;&lt;p&gt;InfluxDB v1 では GUI でポチポチと設定していくだけでグラフが表示できましたが、InfluxDB v2 では Flux で処理を書いていく必要があります。&lt;br&gt;
最初は難しかったですが、慣れればこちらのほうが簡単に思えてきました。&lt;br&gt;
いくつか例を挙げます。&lt;/p&gt;
&lt;h3 id="基本"&gt;&lt;a href="#%e5%9f%ba%e6%9c%ac" class="header-anchor"&gt;&lt;/a&gt;基本
&lt;/h3&gt;&lt;p&gt;以下にサンプルがあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://grafana.com/docs/grafana/latest/datasources/influxdb/query-editor/#use-macros" target="_blank" rel="noopener"
 &gt;https://grafana.com/docs/grafana/latest/datasources/influxdb/query-editor/#use-macros&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from(bucket:&amp;#34;バケット名&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; range(start: v.timeRangeStart, stop: v.timeRangeStop)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; filter(fn:(r) =&amp;gt; r._measurement == &amp;#34;メジャーメント名&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; filter(fn:(r) =&amp;gt; r[&amp;#34;_field&amp;#34;] == &amp;#34;表示したいフィールドの名前&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; aggregateWindow(every: v.windowPeriod, fn: mean)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;基本的にはこれでグラフが作成できます。&lt;/p&gt;
&lt;h3 id="一日ごとのデータを表示"&gt;&lt;a href="#%e4%b8%80%e6%97%a5%e3%81%94%e3%81%a8%e3%81%ae%e3%83%87%e3%83%bc%e3%82%bf%e3%82%92%e8%a1%a8%e7%a4%ba" class="header-anchor"&gt;&lt;/a&gt;一日ごとのデータを表示
&lt;/h3&gt;&lt;p&gt;例えば株価の終値を表示したい場合などは以下のようにすることでできました。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import &amp;#34;timezone&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;option location = timezone.location(name: &amp;#34;Asia/Tokyo&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from(bucket:&amp;#34;バケット名&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; range(start: -30d, stop: now())
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; filter(fn:(r) =&amp;gt; r._measurement == &amp;#34;メジャーメント名&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; filter(fn:(r) =&amp;gt; r[&amp;#34;_field&amp;#34;] == &amp;#34;表示したいフィールドの名前&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; aggregateWindow(every: 1d, fn: last)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ポイントは &lt;code&gt;aggregateWindow(every: 1d, fn: last)&lt;/code&gt; で、一日ごとの最後の値を取得しています。&lt;/p&gt;
&lt;p&gt;また、タイムゾーンを指定しないと UTC での終値（つまり、日本時間の9時の時点の値）が取得されてしまったので、JST を指定しました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.influxdata.com/blog/time-zones-in-flux/" target="_blank" rel="noopener"
 &gt;https://www.influxdata.com/blog/time-zones-in-flux/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;尚、私の場合はグラフではなくテーブル表示にしたかったため、グラフの表示期間に関わらず &lt;code&gt;range(start: -30d, stop: now())&lt;/code&gt; で直近30日固定表示にしています。&lt;/p&gt;
&lt;h3 id="累積グラフの作成"&gt;&lt;a href="#%e7%b4%af%e7%a9%8d%e3%82%b0%e3%83%a9%e3%83%95%e3%81%ae%e4%bd%9c%e6%88%90" class="header-anchor"&gt;&lt;/a&gt;累積グラフの作成
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;cumulativeSum&lt;/code&gt; を使います。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.influxdata.com/influxdb/cloud/query-data/flux/cumulativesum/" target="_blank" rel="noopener"
 &gt;https://docs.influxdata.com/influxdb/cloud/query-data/flux/cumulativesum/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例えば、日次損益の集計を行う場合などは以下のようにするとできました。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import &amp;#34;timezone&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;option location = timezone.location(name: &amp;#34;Asia/Tokyo&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from(bucket:&amp;#34;バケット名&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; range(start: -30d, stop: now())
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; filter(fn:(r) =&amp;gt; r._measurement == &amp;#34;メジャーメント名&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; filter(fn:(r) =&amp;gt; r[&amp;#34;_field&amp;#34;] == &amp;#34;表示したいフィールドの名前&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; aggregateWindow(every: 1d, fn: last)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; cumulativeSum()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;一日ごとの値は取り出す方法は前述の例と同じです。&lt;br&gt;
あとはそれを &lt;code&gt;cumulativeSum()&lt;/code&gt; で加算していくだけです。&lt;br&gt;
これにより、一日ごとの値を加算してグラフに表示できます。&lt;/p&gt;
&lt;h2 id="参考-url"&gt;&lt;a href="#%e5%8f%82%e8%80%83-url" class="header-anchor"&gt;&lt;/a&gt;参考 URL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://qiita.com/aikige/items/22dc9ebc64e32a5bdfae" target="_blank" rel="noopener"
 &gt;https://qiita.com/aikige/items/22dc9ebc64e32a5bdfae&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://qiita.com/ekzemplaro/items/f462dfc0d81329b39c09" target="_blank" rel="noopener"
 &gt;https://qiita.com/ekzemplaro/items/f462dfc0d81329b39c09&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://rabbit-note.com/2022/09/12/influxdb-2-flux/" target="_blank" rel="noopener"
 &gt;https://rabbit-note.com/2022/09/12/influxdb-2-flux/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Influxdb Cloud を使ってみた</title><link>https://blog-0847c6.gitlab.io/posts/2022/12/26/influxdb-cloud/</link><pubDate>Mon, 26 Dec 2022 00:00:00 +0900</pubDate><guid>https://blog-0847c6.gitlab.io/posts/2022/12/26/influxdb-cloud/</guid><description>&lt;p&gt;今までは AWS や GCP 上に InfluxDB の環境を用意して使っていたのですが、InfluxDB Cloud というクラウドサービスがあることを知ったので、使ってみました。&lt;br&gt;
バージョンも今までは v1 を使っていましたが、クラウドなので v2 に変わります。&lt;/p&gt;
&lt;h2 id="準備"&gt;&lt;a href="#%e6%ba%96%e5%82%99" class="header-anchor"&gt;&lt;/a&gt;準備
&lt;/h2&gt;&lt;h3 id="バケットの作成"&gt;&lt;a href="#%e3%83%90%e3%82%b1%e3%83%83%e3%83%88%e3%81%ae%e4%bd%9c%e6%88%90" class="header-anchor"&gt;&lt;/a&gt;バケットの作成
&lt;/h3&gt;&lt;p&gt;InfluxDB v1 系でいう、データベースとリテンションポリシーを合わせたようなものかなと思います。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;サイドメニューより &lt;code&gt;Load Data&lt;/code&gt; &amp;gt; &lt;code&gt;Buckets&lt;/code&gt; を選択します。&lt;/li&gt;
&lt;li&gt;画面右側の &lt;code&gt;GENERATE BUCKET&lt;/code&gt; &amp;gt; クリックします。&lt;/li&gt;
&lt;li&gt;バケット名を入力し、必要に応じてデータの保存期間を指定します（デフォルトでは 30 日経ったら古いデータが削除されます）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="343px" data-flex-grow="143" height="454" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog-0847c6.gitlab.io/posts/2022/12/26/influxdb-cloud/01.png" width="650"&gt;&lt;/p&gt;
&lt;h3 id="トークンの取得"&gt;&lt;a href="#%e3%83%88%e3%83%bc%e3%82%af%e3%83%b3%e3%81%ae%e5%8f%96%e5%be%97" class="header-anchor"&gt;&lt;/a&gt;トークンの取得
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;サイドメニューより &lt;code&gt;Load Data&lt;/code&gt; &amp;gt; &lt;code&gt;API Tokens&lt;/code&gt; を選択します。&lt;/li&gt;
&lt;li&gt;画面右側の &lt;code&gt;GENERATE API TOKEN&lt;/code&gt; &amp;gt; &lt;code&gt;All Access API Token&lt;/code&gt; を選択します。&lt;/li&gt;
&lt;li&gt;トークンが表示されるのでコピーします。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;コピーしたトークンは環境変数などに設定して使います。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt; &lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="n"&gt;INFLUX_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="err"&gt;コピーしたトークン&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="url-の取得"&gt;&lt;a href="#url-%e3%81%ae%e5%8f%96%e5%be%97" class="header-anchor"&gt;&lt;/a&gt;URL の取得
&lt;/h3&gt;&lt;p&gt;API エンドポイントとなる URL は以下で取得できます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;画面上部のメールアドレスを選択 &amp;gt; &lt;code&gt;Settings&lt;/code&gt; をクリック&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="python-からデータを書き込む"&gt;&lt;a href="#python-%e3%81%8b%e3%82%89%e3%83%87%e3%83%bc%e3%82%bf%e3%82%92%e6%9b%b8%e3%81%8d%e8%be%bc%e3%82%80" class="header-anchor"&gt;&lt;/a&gt;Python からデータを書き込む
&lt;/h2&gt;&lt;p&gt;以下の記事を参考にしてください。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://kuttsun.blogspot.com/2022/12/python-influxdb-18-influxdbclient.html" target="_blank" rel="noopener"
 &gt;https://kuttsun.blogspot.com/2022/12/python-influxdb-18-influxdbclient.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;必要な情報はバケット名、トークン、URL です。&lt;/p&gt;
&lt;h2 id="ダッシュボードの作成"&gt;&lt;a href="#%e3%83%80%e3%83%83%e3%82%b7%e3%83%a5%e3%83%9c%e3%83%bc%e3%83%89%e3%81%ae%e4%bd%9c%e6%88%90" class="header-anchor"&gt;&lt;/a&gt;ダッシュボードの作成
&lt;/h2&gt;&lt;p&gt;別途記事にします。&lt;/p&gt;
&lt;h2 id="参考-url"&gt;&lt;a href="#%e5%8f%82%e8%80%83-url" class="header-anchor"&gt;&lt;/a&gt;参考 URL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://dev.classmethod.jp/articles/send-and-visualize-data-with-influxdb-cloud/" target="_blank" rel="noopener"
 &gt;https://dev.classmethod.jp/articles/send-and-visualize-data-with-influxdb-cloud/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>[Python] InfluxDB 1.8 で influxdb_client を使う</title><link>https://blog-0847c6.gitlab.io/posts/2022/12/21/influxdb-client/</link><pubDate>Wed, 21 Dec 2022 00:00:00 +0900</pubDate><guid>https://blog-0847c6.gitlab.io/posts/2022/12/21/influxdb-client/</guid><description>&lt;p&gt;python で InfluxDB v1 に対してデータの読み書きを行う際に、ayncio を使って非同期化したいなと思ったのですが、今使っているライブラリの InfluxDBClient は asyncio に対応していないようでした。&lt;/p&gt;
&lt;p&gt;代わりに influxdata 社の influx-client を使うと asyncio を使えそうだったのですが、こちらは基本的に InfluxDB v2 以降にのみ対応しているようで、Flux という言語にしか対応していません。&lt;br&gt;
InfluxDB v1 以前は InfluxQL という SQL に近い言語が使われていました。&lt;/p&gt;
&lt;p&gt;こちら、以下のページが参考になりました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://rabbit-note.com/2022/09/12/influxdb-2-flux/" target="_blank" rel="noopener"
 &gt;https://rabbit-note.com/2022/09/12/influxdb-2-flux/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ただ、InfluxDB 1.7以降でも設定を変更することで Flux が使えるようになるそうです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/influxdata/influxdb-client-python#influxdb-1-8-api-compatibility" target="_blank" rel="noopener"
 &gt;https://github.com/influxdata/influxdb-client-python#influxdb-1-8-api-compatibility&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;従って、InfluxDB v1 でも Flux を有効にしたうえで、Flux でクエリを記述してデータを取得するようにすれば、asyncio を使って非同期化することができそうです。&lt;br&gt;
ちなみに、データの書き込みに関しては Flux は関係ありませんでした。&lt;/p&gt;
&lt;p&gt;以下、InfluxDB v1 の前提で書いていますが、v2 でも基本的には同じです。&lt;br&gt;
&lt;code&gt;bucket&lt;/code&gt; &lt;code&gt;token&lt;/code&gt; の指定方法が異なるだけです。&lt;/p&gt;
&lt;h2 id="環境"&gt;&lt;a href="#%e7%92%b0%e5%a2%83" class="header-anchor"&gt;&lt;/a&gt;環境
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;InfluxDB 1.8.10&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="flux-言語を有効化する"&gt;&lt;a href="#flux-%e8%a8%80%e8%aa%9e%e3%82%92%e6%9c%89%e5%8a%b9%e5%8c%96%e3%81%99%e3%82%8b" class="header-anchor"&gt;&lt;/a&gt;Flux 言語を有効化する
&lt;/h2&gt;&lt;p&gt;InfluxDB を Docker で動かしていたのですが、環境変数に以下を追加するだけで OK でした。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;INFLUXDB_HTTP_FLUX_ENABLED=true
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="サンプルコード"&gt;&lt;a href="#%e3%82%b5%e3%83%b3%e3%83%97%e3%83%ab%e3%82%b3%e3%83%bc%e3%83%89" class="header-anchor"&gt;&lt;/a&gt;サンプルコード
&lt;/h2&gt;&lt;h3 id="データの書き込み-write_api"&gt;&lt;a href="#%e3%83%87%e3%83%bc%e3%82%bf%e3%81%ae%e6%9b%b8%e3%81%8d%e8%be%bc%e3%81%bf-write_api" class="header-anchor"&gt;&lt;/a&gt;データの書き込み (write_api)
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import asyncio
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from influxdb_client.client.influxdb_client_async import InfluxDBClientAsync
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from influxdb_client.client.write.point import Point
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from influxdb_client.domain.write_precision import WritePrecision
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;if __name__ == &amp;#39;__main__&amp;#39;:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; async def main():
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; url = &amp;#39;http://&amp;lt;url&amp;gt;:8086&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; username = &amp;#39;username&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; password = &amp;#39;password&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dbname = &amp;#39;dbname&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; rpname = &amp;#39;rpname&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # https://zeppelin.apache.org/docs/0.10.1/interpreter/influxdb.html
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bucket = f&amp;#39;{dbname}/{rpname}&amp;#39; # InfluxDB 1.8 では dbname/rpname がバケット名として使われる
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; token = f&amp;#39;{username}:{password}&amp;#39; # InfluxDB 1.8 では username:password がトークンとして使われる
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; org = &amp;#34;-&amp;#34; # InfluxDB 1.8 ではよくわからん
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; data = []
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; data.append({
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;fields&amp;#39;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;hoge&amp;#39;: 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;measurement&amp;#39;: &amp;#39;measurement&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;tags&amp;#39;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;hostname&amp;#39;: &amp;#39;hostname&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; points = [ Point.from_dict(i, WritePrecision.MS) for i in data ]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; async with InfluxDBClientAsync(url=url, token=token, org=org) as client:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; write_api = client.write_api()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; successfully = await write_api.write(bucket=bucket, record=points)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; print(successfully)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="データの読み込み-query_api"&gt;&lt;a href="#%e3%83%87%e3%83%bc%e3%82%bf%e3%81%ae%e8%aa%ad%e3%81%bf%e8%be%bc%e3%81%bf-query_api" class="header-anchor"&gt;&lt;/a&gt;データの読み込み (query_api)
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import asyncio
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from influxdb_client.client.influxdb_client_async import InfluxDBClientAsync
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;if __name__ == &amp;#39;__main__&amp;#39;:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; async def main():
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; url = &amp;#39;http://&amp;lt;url&amp;gt;:8086&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; username = &amp;#39;username&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; password = &amp;#39;password&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dbname = &amp;#39;dbname&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; rpname = &amp;#39;rpname&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # https://zeppelin.apache.org/docs/0.10.1/interpreter/influxdb.html
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bucket = f&amp;#39;{dbname}/{rpname}&amp;#39; # InfluxDB 1.8 では dbname/rpname がバケット名として使われる
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; token = f&amp;#39;{username}:{password}&amp;#39; # InfluxDB 1.8 では username:password がトークンとして使われる
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; org = &amp;#34;-&amp;#34; # InfluxDB 1.8 ではよくわからん
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; query = f&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; from(bucket: &amp;#34;{bucket}&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; range(start: -10m)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; filter(fn:(r) =&amp;gt; r._measurement == &amp;#34;measurement&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; filter(fn: (r) =&amp;gt; r[&amp;#34;_field&amp;#34;] == &amp;#34;field&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |&amp;gt; aggregateWindow(every: 1m, fn: mean, createEmpty: false)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; async with InfluxDBClientAsync(url=url, token=token, org=org) as client:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; tables = await client.query_api().query(query=query)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; for table in tables:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; print(table)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; for record in table.records:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; print (record.values)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; asyncio.run(main())
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Flux については以下のページが参考になりました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://qiita.com/riverplus/items/20456e4188a4c0f5f62d" target="_blank" rel="noopener"
 &gt;https://qiita.com/riverplus/items/20456e4188a4c0f5f62d&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="参考-url"&gt;&lt;a href="#%e5%8f%82%e8%80%83-url" class="header-anchor"&gt;&lt;/a&gt;参考 URL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://powersj.io/posts/influxdb-docker-dev/" target="_blank" rel="noopener"
 &gt;https://powersj.io/posts/influxdb-docker-dev/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/influxdata/influxdb-client-python#async-write-api" target="_blank" rel="noopener"
 &gt;https://github.com/influxdata/influxdb-client-python#async-write-api&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://influxdb-client.readthedocs.io/en/stable/api.html#queryapi" target="_blank" rel="noopener"
 &gt;https://influxdb-client.readthedocs.io/en/stable/api.html#queryapi&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>