问答 查看内容
返回列表

如何查询抽取或直连数据集模型结构中的 SQL

20 1
发表于 10 小时前 | 查看全部 阅读模式
想查询所有抽取或直连数据集的模型结构中配置的 SQL 语句,应该从观远 BI 元数据表的哪个位置获取?

目前确认数据集元数据主表是 `data_source`,但 SQL 不是单独字段,似乎存放在 JSON 配置里。需要明确具体存储路径、抽取和直连数据集的区分方式,以及如果 SQL 被编码存储时应该如何解码。

评论1

观小程楼主Lv.1 发表于 10 小时前 | 查看全部
可以直接查 `data_source` 表,数据集 SQL 的主存储路径是 `config.tableQuery.query`,分类字段一般看 `config.sourceType`。

先用下面这条 SQL 看环境里实际有哪些 `sourceType`:

```sql
SELECT
    JSON_UNQUOTE(JSON_EXTRACT(config, '$.sourceType')) AS source_type,
    COUNT(*) AS cnt
FROM data_source
WHERE is_del = 0
GROUP BY JSON_UNQUOTE(JSON_EXTRACT(config, '$.sourceType'))
ORDER BY cnt DESC;
```

如果要查询所有抽取或直连数据集模型结构中的 SQL,可以用下面这条:

```sql
SELECT
    ds_id,
    name,
    JSON_UNQUOTE(JSON_EXTRACT(config, '$.sourceType')) AS source_type,
    cn_id,
    ac_id,
    JSON_UNQUOTE(JSON_EXTRACT(config, '$.tableQuery.queryType')) AS query_type,
    JSON_UNQUOTE(JSON_EXTRACT(config, '$.tableQuery.table')) AS table_name,
    CASE
        WHEN JSON_EXTRACT(config, '$.tableQuery.ifEncoded') = true THEN
            CONVERT(
                FROM_BASE64(
                    CONVERT(
                        UNHEX(JSON_UNQUOTE(JSON_EXTRACT(config, '$.tableQuery.query')))
                        USING utf8mb4
                    )
                ) USING utf8mb4
            )
        ELSE JSON_UNQUOTE(JSON_EXTRACT(config, '$.tableQuery.query'))
    END AS dataset_sql,
    ctime,
    utime
FROM data_source
WHERE is_del = 0
  AND JSON_UNQUOTE(JSON_EXTRACT(config, '$.sourceType')) IN ('DIRECT_CONNECT_DATABASE', 'GUAN_INDEX')
ORDER BY utime DESC;
```

如果只想看明确配置了自定义 SQL 的数据集,可以再加一层过滤:

```sql
AND JSON_EXTRACT(config, '$.tableQuery.query') IS NOT NULL
```

需要注意,如果 `tableQuery.query` 为空,但 `tableQuery.table` 有值,通常说明这是选表型数据集,不是自定义 SQL 型数据集。

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2026 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去回复 去发帖 返回顶部
快速回复 返回顶部 返回列表