如何实现从SQL Server向Azure ML管道或数据存储自动获取数据?
实现SQL Server到Azure ML管道/数据存储的自动化方案
完全可以实现自动化,下面是几种实用方案:
方案1:Azure ML管道内直接读取SQL Server数据(无需先同步到数据存储)
这种方式跳过中间手动导入步骤,让管道直接从SQL Server拉取数据用于训练:
- 在Azure ML工作区注册SQL Server数据源:支持SQL身份验证或Azure AD身份验证,配置好服务器地址、数据库名、凭据即可
- 管道中添加「导入数据」组件:选择已注册的SQL数据源,编写SQL查询筛选需要的数据,组件输出可直接对接后续训练步骤;也可以将数据写入Azure ML数据存储(如Blob Storage)留存
- 用Python SDK实现的话,示例代码如下:
from azureml.core import Workspace, Dataset ws = Workspace.from_config() # 注册SQL数据源 sql_dataset = Dataset.Tabular.from_sql_query( sql_query="SELECT * FROM your_table WHERE condition", server_name="your-sql-server.database.windows.net", database_name="your-db", credential=ws.get_default_keyvault().get_secret("sql-credential") ) # 在管道步骤中使用该数据集 from azureml.pipeline.steps import PythonScriptStep train_step = PythonScriptStep( script_name="train.py", arguments=["--input-data", sql_dataset.as_named_input("sql_data")], compute_target=compute_target, source_directory="./src" )
方案2:用Azure Data Factory自动化同步SQL Server到数据存储,再触发ML管道
适合需要先将SQL数据落地到数据存储的场景:
- 在ADF创建「复制数据」管道:源端选SQL Server,目标端选Azure ML关联的Blob/ADLS Gen2存储
- 设置触发规则:可以定时触发(如每日凌晨),或基于SQL Server的数据变更事件触发
- 配置后续触发:ADF管道完成后,通过「Web活动」调用Azure ML管道的REST API,自动启动训练流程
方案3:管道内自定义脚本读取SQL数据并存储
如果需要更灵活的数据处理逻辑,可在管道中添加自定义Python脚本步骤:
- 脚本中用
pyodbc或sqlalchemy连接SQL Server读取数据 - 处理完成后,用Azure ML SDK将数据上传到数据存储,或直接传入训练逻辑
示例代码片段:
import pyodbc import pandas as pd from azureml.core import Datastore, Workspace ws = Workspace.from_config() # 连接SQL Server conn_str = "Driver={ODBC Driver 17 for SQL Server};Server=tcp:your-server,1433;Database=your-db;Uid=your-username;Pwd=your-password;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;" conn = pyodbc.connect(conn_str) df = pd.read_sql("SELECT * FROM your_table", conn) # 保存为本地文件后上传到数据存储 df.to_csv("./processed_data.csv", index=False) datastore = Datastore.get(ws, name="your-datastore") datastore.upload_files(files=["./processed_data.csv"], target_path="sql_data/", overwrite=True)
内容的提问来源于stack exchange,提问作者Mavil
相关产品推荐
相关产品推荐

