105 lines
2.8 KiB
Python
105 lines
2.8 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
调试Flux查询语句
|
|
"""
|
|
|
|
import json
|
|
import os
|
|
from influx_service import InfluxService, InfluxConnectionParams
|
|
|
|
def load_config():
|
|
"""从default.json加载配置"""
|
|
config_path = os.path.join(os.path.dirname(__file__), "default.json")
|
|
try:
|
|
with open(config_path, 'r', encoding='utf-8') as f:
|
|
config = json.load(f)
|
|
return config.get('influx', {})
|
|
except Exception as e:
|
|
print(f"❌ 加载配置文件失败: {e}")
|
|
return {}
|
|
|
|
def test_flux_query():
|
|
"""测试Flux查询语句"""
|
|
config = load_config()
|
|
|
|
# 创建连接参数
|
|
params = InfluxConnectionParams(
|
|
url=config.get('url', ''),
|
|
org=config.get('org', ''),
|
|
token=config.get('token', '')
|
|
)
|
|
|
|
# 创建服务
|
|
service = InfluxService(params)
|
|
|
|
# 测试参数
|
|
bucket = config.get('bucket', 'default')
|
|
measurement = config.get('measurement', 'status')
|
|
fields = ['status']
|
|
filters = {}
|
|
time_range = "-1h"
|
|
|
|
print("🔍 测试Flux查询")
|
|
print(f"Bucket: {bucket}")
|
|
print(f"Measurement: {measurement}")
|
|
print(f"Fields: {fields}")
|
|
print(f"Time Range: {time_range}")
|
|
print()
|
|
|
|
# 生成Flux查询语句
|
|
flux = service.build_flux(
|
|
bucket=bucket,
|
|
measurement=measurement,
|
|
fields=fields,
|
|
filters=filters,
|
|
time_range=time_range
|
|
)
|
|
|
|
print("📝 生成的Flux查询语句:")
|
|
print("-" * 50)
|
|
print(flux)
|
|
print("-" * 50)
|
|
print()
|
|
|
|
# 尝试执行查询
|
|
try:
|
|
print("🚀 执行查询...")
|
|
df = service.query(
|
|
bucket=bucket,
|
|
measurement=measurement,
|
|
fields=fields,
|
|
filters=filters,
|
|
time_range=time_range
|
|
)
|
|
|
|
print(f"✅ 查询成功! 返回 {len(df)} 行数据")
|
|
if not df.empty:
|
|
print("📊 数据预览:")
|
|
print(df.head())
|
|
|
|
# 检查status字段的值
|
|
if 'status' in df.columns:
|
|
status_values = df['status'].unique()
|
|
print(f"🎯 Status字段的唯一值: {status_values}")
|
|
elif '_value' in df.columns:
|
|
status_values = df['_value'].unique()
|
|
print(f"🎯 _value字段的唯一值: {status_values}")
|
|
else:
|
|
print("⚠️ 查询结果为空")
|
|
|
|
except Exception as e:
|
|
print(f"❌ 查询失败: {e}")
|
|
print("\n🔧 可能的原因:")
|
|
print("1. Bucket不存在")
|
|
print("2. Measurement不存在")
|
|
print("3. 时间范围内没有数据")
|
|
print("4. Flux语法错误")
|
|
|
|
def main():
|
|
print("Flux查询调试工具")
|
|
print("=" * 50)
|
|
test_flux_query()
|
|
|
|
if __name__ == "__main__":
|
|
main()
|