Project Icon

influxdb-client-csharp

C#客户端库 用于InfluxDB 2.x时序数据库

influxdb-client-csharp是为InfluxDB 2.x设计的C#客户端库。它支持Flux查询语言、数据写入、管理API和LINQ查询。该库提供了简单的接口,便于开发者与InfluxDB交互,实现时序数据的存储、查询和管理。适用于需要在C#项目中集成InfluxDB 2.x的开发人员。

influxdb-client-csharp

CircleCI codecov Nuget License GitHub issues GitHub pull requests Slack Status

这个仓库包含用于InfluxDB 2.x和Flux的C#客户端库。InfluxDB 3.x用户应该使用轻量级的v3客户端库。InfluxDB 1.x用户应该使用v1客户端库

为了便于迁移并获得一致的查询和写入体验,v2用户应考虑使用InfluxQL和v1客户端库

文档

本节包含客户端库文档的链接。

客户端描述文档兼容性
Client允许查询、写入和InfluxDB 2.x管理的参考C#客户端。readme2.x
Client.Linq该库支持使用LINQ表达式查询InfluxDB。readme2.x
Client.Legacy允许您对InfluxDB 1.7+执行Flux查询的参考C#客户端。readme1.7+

功能特性

  • 支持通过InfluxDB 1.7+ REST API(/api/v2/query端点)使用Flux语言进行查询
  • InfluxDB 2.x客户端
    • 使用Flux语言查询数据
    • 使用以下方式写入数据
    • InfluxDB 2.x管理API客户端,用于管理
      • 源、桶
      • 任务
      • 授权
      • 健康检查
      • ...

使用方法

InfluxDB 2.x中的写入和查询

以下示例演示如何将数据写入InfluxDB 2.x并使用Flux语言读取它们:

安装

使用最新版本:

.Net CLI
dotnet add package InfluxDB.Client
或者使用包管理器
Install-Package InfluxDB.Client
using System;
using InfluxDB.Client;
using InfluxDB.Client.Api.Domain;
using InfluxDB.Client.Core;
using InfluxDB.Client.Writes;
using Task = System.Threading.Tasks.Task;

namespace Examples
{
    public static class QueriesWritesExample
    {
        private static readonly char[] Token = "".ToCharArray();

        public static async Task Main()
        {
            using var client = new InfluxDBClient("http://localhost:8086", Token);

            //
            // 写入数据
            //
            using (var writeApi = client.GetWriteApi())
            {
                //
                // 通过Point写入
                //
                var point = PointData.Measurement("temperature")
                    .Tag("location", "west")
                    .Field("value", 55D)
                    .Timestamp(DateTime.UtcNow.AddSeconds(-10), WritePrecision.Ns);
                
                writeApi.WritePoint(point, "bucket_name", "org_id");
                
                //
                // 通过行协议写入
                //
                writeApi.WriteRecord("temperature,location=north value=60.0", WritePrecision.Ns, "bucket_name", "org_id");
                
                //
                // 通过POCO写入
                //
                var temperature = new Temperature {Location = "south", Value = 62D, Time = DateTime.UtcNow};
                writeApi.WriteMeasurement(temperature, WritePrecision.Ns, "bucket_name", "org_id");
            }
            
            //
            // 查询数据
            //
            var flux = "from(bucket:\"temperature-sensors\") |> range(start: 0)";

            var fluxTables = await influxDBClient.GetQueryApi().QueryAsync(flux, "org_id");
            fluxTables.ForEach(fluxTable =>
            {
                var fluxRecords = fluxTable.Records;
                fluxRecords.ForEach(fluxRecord =>
                {
                    Console.WriteLine($"{fluxRecord.GetTime()}: {fluxRecord.GetValue()}");
                });
            });
        }
        
        [Measurement("temperature")]
        private class Temperature
        {
            [Column("location", IsTag = true)] public string? Location { get; set; }

            [Column("value")] public double Value { get; set; }

            [Column(IsTimestamp = true)] public DateTime Time { get; set; }
        }
    }
}

使用管理API在InfluxDB 2.x中创建新的Bucket

以下示例演示如何使用InfluxDB 2.x管理API。更多信息请参见客户端文档

安装

使用最新版本:

.Net CLI
dotnet add package InfluxDB.Client
或者使用包管理器
Install-Package InfluxDB.Client
using System;
using System.Collections.Generic;
using System.Linq;
using InfluxDB.Client;
using InfluxDB.Client.Api.Domain;
using Task = System.Threading.Tasks.Task;

namespace Examples
{
    public static class ManagementExample
    {
        public static async Task Main()
        {
            const string url = "http://localhost:8086";
            const string token = "my-token";
            const string org = "my-org";
            
            using var client = new InfluxDBClient(url, token);

            // 查找指定名称的组织的ID(PermissionAPI需要组织的ID)。
            var orgId = (await client.GetOrganizationsApi().FindOrganizationsAsync(org: org)).First().Id;

            //
            // 创建数据保留时间设置为3,600秒的"iot_bucket"桶
            //
            var retention = new BucketRetentionRules(BucketRetentionRules.TypeEnum.Expire, 3600);

            var bucket = await client.GetBucketsApi().CreateBucketAsync("iot_bucket", retention, orgId);
//
// 创建访问"iot_bucket"的访问令牌
//
var resource = new PermissionResource(PermissionResource.TypeEnum.Buckets, bucket.Id, null, orgId);

// 读取权限
var read = new Permission(Permission.ActionEnum.Read, resource);

// 写入权限
var write = new Permission(Permission.ActionEnum.Write, resource);

var authorization = await client.GetAuthorizationsApi()
    .CreateAuthorizationAsync(orgId, new List<Permission> { read, write });

//
// 创建可用于写入"iot_bucket"的令牌
//
Console.WriteLine($"用于写入iot_bucket的授权令牌: {authorization.Token}");
        }
    }
}

InfluxDB 1.8 API 兼容性

InfluxDB 1.8.0引入了向前兼容的API,用于InfluxDB 2.x。这使您可以轻松地从InfluxDB 1.x迁移到InfluxDB 2.x云服务或开源版本。

以下是可用的向前兼容API:

API端点描述
[QueryApi.cs](https://github.com/influxdata/influxdb-client-csharp/blob/master/Client/QueryApi.cs/api/v2/query使用InfluxDB 2.x API和Flux在InfluxDB 1.8.0+中查询数据 (端点应通过flux-enabled选项启用)
[WriteApi.cs](https://github.com/influxdata/influxdb-client-csharp/blob/master/Client/WriteApi.cs/api/v2/write使用InfluxDB 2.x API向InfluxDB 1.8.0+写入数据
[PingAsync](https://github.com/influxdata/influxdb-client-csharp/blob/master/Client/InfluxDBClient.cs#L431/ping检查InfluxDB实例的状态和InfluxDB版本。

详细信息请参见InfluxDB 1.8示例

InfluxDB 1.7+中的Flux查询

以下示例演示了使用Flux语言进行查询。

安装

使用最新版本:

.Net CLI
dotnet add package InfluxDB.Client.Flux
或者使用包管理器
Install-Package InfluxDB.Client.Flux
using System;
using InfluxDB.Client.Flux;

namespace Examples
{
    public static class FluxExample
    {
        public static void Run()
        {
            using var client = new FluxClient("http://localhost:8086/");

            var fluxQuery = "from(bucket: \"telegraf\")\n"
                               + " |> filter(fn: (r) => (r[\"_measurement\"] == \"cpu\" AND r[\"_field\"] == \"usage_system\"))"
                               + " |> range(start: -1d)"
                               + " |> sample(n: 5, pos: 1)";

            client.QueryAsync(fluxQuery, record =>
                            {
                                // 处理Flux查询记录
                                Console.WriteLine(record.GetTime() + ": " + record.GetValue());
                            },
                            (error) =>
                            {
                                // 处理结果时的错误处理
                                Console.WriteLine(error.ToString());

                            }, () =>
                            {
                                // 完成时
                                Console.WriteLine("查询完成");
                            }).GetAwaiter().GetResult();
        }
    }
}

贡献

如果您想贡献代码,您可以通过GitHub fork仓库并向master分支发送拉取请求来实现。

许可证

InfluxDB 2.x客户端根据MIT许可证发布。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号