假设我有一个使用多个表来检索数据的KQL查询. 我需要用C#编写一些代码,这些代码将获取给定KQL查询使用的所有表,并将所有这些表名放到一个列表中.

简单地说:我需要分析每个KQL查询,以了解它从哪个表获得数据.

我已经try 通过编写以下代码来做到这一点:

var query = "Table1 | project a ,b,c";
       var code = KustoCode.Parse(query);‏
var parseCode = code.Analyze();
Console.WriteLine(parseCode.ResultType.Display.ToString());

但这并不返回tables个名字,而是返回该查询使用的columns个名字,这不是我想要的.

如果你能帮我解决这个问题,我将不胜感激!

推荐答案

谢谢你的帮助!我终于找到了解决方案,所以下面是我的代码:

var code = KustoCode.Parse(query).Analyze();

SyntaxElement.WalkNodes(code.Syntax,
       Operator =>
       {
           if (Operator is Expression e && e.RawResultType is TableSymbol && Operator.Kind.ToString() == "NameReference")
               tables.Add(e.ToString());
       })

Csharp相关问答推荐

为什么在GuardationRule的收件箱函数中,decode.TryParse(valueString,out valueParsed)在给出1.0.1时返回true?

使用C#中的Shape API从Azure目录获取所有用户

CsWin32如何创建PWSTR的实例,例如GetWindowText

如何使用C#和Graph API从Azure Directory获取用户详细信息

处理. netstandard2.0项目中HttpClient.SslProtocol的PlatformNotSupportedException问题""

. NET 8使用COM向VB6公开

EF Core在请求列表时忽略列,但在按ID获取时包含

使用命令初始化可绑定属性

Azure DEVOPS找不到定制的Nuget包

MongoDB.NET-将数据绑定到模型类,但无法读取整数值

Azure函数中实体框架核心的依赖注入

如何通过属性初始化器强制初始化继承记录内的属性?

如何使用MailKit删除邮箱?

当我没有此令牌时,为什么语法报告EOF错误?

在.NET 8最低API中从表单绑定中排除属性

如何让两个.NET版本不兼容的项目对话?

如何避免在.NET中将日志(log)写入相对路径

当我在Git中暂存文件更改时,它们会消失

ASP.NET核心中的验证错误-该字段为必填字段

方法加载时出现类型加载异常