azure - 使用 SQL 生成自定义 JSON

标签 azure databricks databricks-sql

我正在尝试生成包含统一目录信息的 JSON。我想要的输出是:

table_name : {
     column1 : {
         type: column1type
    },
    column2 : {
         type: column2type
    },
    column3: {
         type: column3type
    },
    …
}

我尝试了以下 SQL:

WITH column_metadata AS (
    SELECT
        COLUMN_NAME,
        DATA_TYPE
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = 'table_name'
)

SELECT
    TO_JSON(
        MAP(
            COLLECT_LIST(
                MAP(
                    COLUMN_NAME,
                    TO_JSON(MAP('type', DATA_TYPE))
                )
            )
        )
    ) AS json_result
FROM column_metadata

当我运行上述 SQL 时,出现以下错误:

[INVALID_OPTIONS.NON_MAP_FUNCTION] Invalid options: Must use the `map()` function for options.

由于我在每个 TO_JSON 函数中使用 MAP,为什么会发生此错误?

最佳答案

您可以使用任何一个查询来获取列名称和类型。

SELECT
    to_json(
        MAP(
            'table_name',
            collect_list(MAP(COLUMN_NAME,MAP('type', DATA_TYPE))
            )
        )
    ) AS json_result
FROM column_metadata

输出:

enter image description here

或者

SELECT
    to_json(
        MAP(
            'table_name',
            collect_list(struct(COLUMN_NAME,DATA_TYPE)
            )
        )
    ) AS json_result
FROM column_metadata

输出:

enter image description here

这里我没有使用map,而是使用了struct,它使用列名称创建结构类型数据。

关于azure - 使用 SQL 生成自定义 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77099113/

相关文章:

azure - 我们如何在这两个 Azure Active Directory/Azure 帐户之间共享应用程序注册 - 应用程序?

azure - FHIR服务器的认证和授权

c# - Microsoft.Azure.WebJobs.IAsyncCollector<T> 线程安全吗?

unit-testing - 使用 Nutter 进行 Databricks 单元测试

python - python函数中的变量问题,未定义

azure - 为什么 Azure Databricks 中未启用 SQL 终结点?

sql - 在每年 12 月的第二个星期日及之后将自定义列添加到日历表中,其中包含下一年的年号

c# - Azure Speech SDK 语音转文本以流式传输音频片段

python - 如何获取第一个类型 A 的注册表和第一个类型 B 的注册表并将其移动到单行