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

如何查询Azure外部表位置?能否在Notebook中一步创建Synapse外部表?

问题1:如何查询Azure外部表的存储位置?

方式1:Synapse SQL池(专用/无服务器)中用T-SQL查询

执行以下SQL,替换your_database和your_external_table为实际名称:

USE your_database;
SELECT 
    t.name AS table_name,
    l.location AS storage_location
FROM 
    sys.external_tables t
JOIN 
    sys.external_data_sources s ON t.data_source_id = s.data_source_id
JOIN 
    sys.external_file_locations l ON s.data_source_id = l.data_source_id
WHERE 
    t.name = 'your_external_table';

方式2:Spark Notebook中查询

用Spark SQL的DESCRIBE EXTENDED命令查看,结果里的Location字段就是存储路径:

DESCRIBE EXTENDED your_external_table;

问题2:在Jupyter Notebook中直接基于Parquet文件创建外部表

可以在同一个Notebook里完成写入Parquet和创建外部表的操作,无需依赖流水线,以下是两种简便实现方式:

方法1:Spark SQL分步/一键创建

先写入Parquet,再基于路径或临时视图创建外部表:

# 1. 写入Parquet(保留你的原有代码)
df.write.parquet('abfss://mycontainer@mylocation/Test', mode='overwrite')

# 2. 基于DataFrame创建临时视图,简化表结构定义
df.createOrReplaceTempView('temp_df_view')

# 3. 在指定数据库中创建外部表
spark.sql("""
    USE your_target_database;
    CREATE EXTERNAL TABLE IF NOT EXISTS your_external_table
    USING PARQUET
    LOCATION 'abfss://mycontainer@mylocation/Test'
    AS SELECT * FROM temp_df_view
""")

如果已经明确表结构,也可以直接写CREATE EXTERNAL TABLE语句,跳过临时视图步骤。

方法2:用saveAsTable一步完成写入+创建外部表

直接调用Spark的saveAsTable方法,指定存储路径和外部表属性,一步到位:

df.write.mode('overwrite') \
  .option('path', 'abfss://mycontainer@mylocation/Test') \
  .saveAsTable('your_target_database.your_external_table')

这个方法会自动在目标数据库创建外部表,同时将数据写入指定的Parquet路径。

注意事项

  • 确保Spark会话拥有存储账户的访问权限(如MSI、服务主体授权)
  • 根据需求选择写入模式:overwrite覆盖现有数据,append追加数据
  • 若后续要用无服务器SQL池访问该表,需提前配置好对应的外部数据源和文件格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 08:27:46