gpt4 book ai didi

azure - 在 F# 中遍历 Azure 存储类型提供程序生成的类型

转载 作者:行者123 更新时间:2023-12-01 23:09:42 24 4
gpt4 key购买 nike

我正在尝试了解 F# 中的类型提供程序以及它们的用途。我遇到以下问题:

我在 Azure Blob 存储中存储了一系列 JSON 对象,如下所示:

container/YYYY/MM/DD/file.json

我可以使用类型提供程序轻松导航到给定日期的特定文件。例如,我可以将 5 月 5 日的 JSON 对象作为字符串访问:

type Azure = AzureTypeProvider<"ConnectionString">
let containers = Azure.Containers.``container``.``2017/``.``05/``.``05/``.``file.json``.Read()

如何获取用户输入的日期字符串(例如“2017-05-05”)并以类型安全的方式获取相应的 JSON 对象?我是否应该使用类型提供者?

最佳答案

您遇到了许多 TP 性质的常见“问题”,特别是那些提供针对实际数据的模式的 TP,因为它混合了数据和类型之间的界限,因此您需要注意:以适合静态类型的模式工作(即,您在编译时知道正在使用的 Blob 容器的架构),或者以本质上动态的方式工作。

这里有几个选项。

  1. 退回到“ native ”.NET SDK。每个 blob/容器都有关联的 AsCloudBlob()AsCloudContainer() 方法,因此您可以使用 TP 来表示您确实知道的位,例如容器名称,可能是顶级文件夹等,然后回退到 native SDK 来获取弱类型位。

  2. 自 TP 最新版本以来,现在通过多种方式支持编程访问:-

    • 您可以使用索引器来获取 blob 的不安全句柄,例如让 blob = Azure.Containers.container.["2017/05/05/file.json"]。无法保证该 blob 存在,因此您需要自行检查等。

    • 您可以使用 TryGetBlockBlob() 方法,该方法返回一个 blob 选项 async - 在幕后,它将检查 blob 是否存在或否,然后返回 None 或 Some blob。

您可以查看所有这些替代方案的更多示例 here .

  • 如果您预先知道正在使用的完整路径(在编译时 - 也许是一些众所周知的路径等),您还可以使用 offline support在 TP 中在编译时创建显式 blob 模式,而不需要真正的存储帐户。
  • 关于azure - 在 F# 中遍历 Azure 存储类型提供程序生成的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44068490/

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