You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取Synapse湖数据库各表的列数与行数

在Synapse湖数据库中同时获取表的列数和行数的解决方法

方法1:用Synapse Serverless SQL批量查询

针对从Dataverse同步来的外部表,直接写SQL就能批量拿到所有表的列数和行数:

单表查询

SELECT
    '目标表名' AS table_name,
    (SELECT COUNT(column_id) FROM sys.columns WHERE object_id = OBJECT_ID('目标表名')) AS column_count,
    (SELECT COUNT(*) FROM 目标表名) AS row_count;

批量查询所有外部表

用动态SQL自动遍历所有湖数据库表:

DECLARE @sql NVARCHAR(MAX) = '';

SELECT @sql += 'UNION ALL SELECT ''' + name + ''' AS table_name, ' + 
               '(SELECT COUNT(column_id) FROM sys.columns WHERE object_id = OBJECT_ID(''' + QUOTENAME(name) + ''')) AS column_count, ' +
               '(SELECT COUNT(*) FROM ' + QUOTENAME(name) + ') AS row_count '
FROM sys.external_tables;

SET @sql = STUFF(@sql, 1, 10, '');

EXEC sp_executesql @sql;

注意:大型表用COUNT(*)会较慢,可换成APPROX_COUNT_BIG(*)获取近似行数提升查询速度。

方法2:Synapse Studio可视化查看(临时场景)

如果只是临时查看个别表的数据:

  • 打开Synapse Studio,找到湖数据库里的目标表,右键选「预览数据」
  • 预览界面顶部会直接显示总行数,列数可以通过表头或右侧列列表统计

方法3:Delta格式表直接读元数据(如果同步的是Delta表)

如果同步过来的表是Delta Lake格式,直接查元数据就能快速拿到行数,无需全表扫描:

SELECT
    t.name AS table_name,
    COUNT(c.column_id) AS column_count,
    JSON_VALUE(t.properties, '$.numRows') AS row_count
FROM sys.external_tables t
JOIN sys.columns c ON t.object_id = c.object_id
WHERE t.data_source_id IN (
    SELECT data_source_id FROM sys.external_data_sources WHERE type_desc = 'DELTA'
)
GROUP BY t.name, t.properties;

内容的提问来源于stack exchange,提问作者Dharmesh Rathod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:42:12