gpt4 book ai didi

c# - 在 Azure Functions 中查询外部表

转载 作者:行者123 更新时间:2023-12-03 04:26:44 25 4
gpt4 key购买 nike

我创建了一个 Azure 函数 (C#) 来从本地 SQL Server 数据表中提取数据。我使用了实验性外部表连接器(apiHubTable 为技术名称)。

连接器从我的本地表中检索数据,但查询未执行(我始终拥有表的完整内容):

Query query = Query.Parse($"LastUpdate >\"{jobDefinition.LastExecutionDate.ToString("yyyy-MM-ddTHH:mm:ss")}\"");
var result = await eventsSqlTable.ListEntitiesAsync(query);

这是实体定义:

public class Event
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime LastUpdate { get; set; }
}

使用什么语言来表达查询?奥数据?另一个 ?你有 sample 吗?这个功能已经实现了吗?

最佳答案

过滤器以 OData“语言”( OData website ) 表示,因为与本地 SQL Server 的连接与逻辑应用程序使用相同的数据网关(过滤器在 SQL 连接器的逻辑应用程序中用 OData 表示) )。

这是一个查询示例:

$top=1000&$orderby=LastUpdate&$filter=year(LastUpdate) gt 2016 or (year(LastUpdate) eq 2016 and month(LastUpdate) gt 11 or (month(LastUpdate) eq 11 and day(LastUpdate) gt 3 or (day(LastUpdate) eq 3 and hour(LastUpdate) gt 11 or (hour(LastUpdate) eq 11 and minute(LastUpdate) gt 15 or (minute(LastUpdate) eq 15 and second(LastUpdate) ge 2)))))

注意:日期比较非常复杂,因为 OData/数据网关以 datetimeoffset(T-SQL 类型)转换日期时间。如果您的表字段的类型为日期时间,则可能会出现一些问题。

这个pragamtica website托管一个可以帮助您使用图形工具构建请求的工具。

最后,这是用于构建过滤器最后一部分的代码:

public static string BuildDateFilter(string fieldName, DateTime dateToCompare)
{
StringBuilder filterbuilder = new StringBuilder();
filterbuilder.Append($"year({fieldName}) gt {dateToCompare.Year} or ("); // Or Year
filterbuilder.Append($"year({fieldName}) eq {dateToCompare.Year} and ("); //And Year
filterbuilder.Append($"month({fieldName}) gt {dateToCompare.Month} or ("); //Or Month
filterbuilder.Append($"month({fieldName}) eq {dateToCompare.Month} and ("); //And Month
filterbuilder.Append($"day({fieldName}) gt {dateToCompare.Day} or ("); //Or Day
filterbuilder.Append($"day({fieldName}) eq {dateToCompare.Day} and ("); //And Day
filterbuilder.Append($"hour({fieldName}) gt {dateToCompare.Hour} or ("); //Or Hour
filterbuilder.Append($"hour({fieldName}) eq {dateToCompare.Hour} and ("); //And Hour
filterbuilder.Append($"minute({fieldName}) gt {dateToCompare.Minute} or ("); //Or Minute
filterbuilder.Append($"minute({fieldName}) eq {dateToCompare.Minute} and ("); //And Minute
filterbuilder.Append($"second({fieldName}) ge {dateToCompare.Second}");
filterbuilder.Append(")"); //And Minute
filterbuilder.Append(")"); //Or Minute
filterbuilder.Append(")"); //And Hour
filterbuilder.Append(")"); //Or Hour
filterbuilder.Append(")"); //And Day
filterbuilder.Append(")"); //Or Day
filterbuilder.Append(")"); //And Month
filterbuilder.Append(")"); //Or Month
filterbuilder.Append(")"); //And Year
filterbuilder.Append(")"); //Or Year
return filterbuilder.ToString();
}

关于c# - 在 Azure Functions 中查询外部表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42251207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com