如何在Microsoft Fabric中通过PySpark读取PBI语义模型表写入Warehouse?
在Microsoft Fabric PySpark笔记本中读取PBI语义模型并写入Warehouse
可以实现这个需求,Lakehouse和Warehouse的写入逻辑差异主要在于存储格式与访问方式——Lakehouse基于Delta Lake,而Warehouse依赖Fabric的SQL Endpoint关系型存储,以下是适配的具体方法和代码:
完整适配代码
读取PBI语义模型的逻辑你已经写对了,重点修改写入部分即可:
from pyspark.sql import SparkSession # 初始化Spark会话(无需Delta相关配置,Warehouse不需要) spark = SparkSession.builder \ .appName("WarehouseIntegration") \ .getOrCreate() # 读取PBI语义模型表(复用你原有的逻辑) df = spark.sql("SELECT * FROM pbi.`Financials_Test`.`financials`") # 方法1:通过Fabric内置Warehouse Catalog写入(推荐,无需额外配置) df.write.mode("overwrite") \ .format("sqlserver") \ .option("dbtable", "你的Warehouse名称.dbo.Fin") # 替换为实际的Warehouse名和目标表名 .save() # 方法2:JDBC连接方式(适用于需要自定义参数的场景) # df.write.mode("overwrite") \ # .format("jdbc") \ # .option("url", "jdbc:sqlserver://<你的SQL Endpoint地址>:1433;databaseName=<Warehouse名称>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;") \ # .option("dbtable", "dbo.Fin") \ # .option("user", "<你的账号>") \ # .option("password", "<你的密码>") \ # .save()
注意事项
- 权限检查:确保你的账号拥有PBI语义模型的读取权限,以及目标Warehouse的写入权限。
- 字段类型兼容:PBI语义模型的字段类型需与Warehouse目标表匹配,不兼容时可通过
df.withColumn("字段名", df["字段名"].cast("目标类型"))转换。 - 写入模式:
mode("overwrite")会覆盖整张表,若需追加数据可改为mode("append")。 - Catalog识别:方法1依赖Fabric自动加载当前工作区内的Warehouse,确保目标Warehouse在同一工作区。
内容的提问来源于stack exchange,提问作者ej sundar
相关产品推荐
相关产品推荐

