你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
开始在分析工作负荷中使用 DICOM 数据
本文介绍如何通过 Azure 数据工厂和 Microsoft Fabric 开始在分析工作负载中使用 DICOM® 数据。
先决条件
在开始之前,请完成以下步骤:
- 通过启用分层命名空间,创建具有 Azure Data Lake Storage Gen2 功能的存储帐户 :
- 创建用于存储 DICOM 元数据的容器,例如,命名为
dicom
。
- 创建用于存储 DICOM 元数据的容器,例如,命名为
- 部署一个 DICOM 服务的实例。
- (可选)使用 Data Lake Storage 部署 DICOM 服务,以便直接访问 DICOM 文件。
- 创建数据工厂实例:
- 启用系统分配的托管标识。
- 在 Fabric 中创建湖屋。
- 将角色分配添加到数据工厂系统分配的托管标识,用于 DICOM 服务和 Data Lake Storage Gen2 存储帐户:
- 添加 DICOM 数据读取者角色,以授予 DICOM 服务的权限。
- 添加存储 Blob 数据参与者角色,以授予 Data Lake Storage Gen2 帐户的权限。
为 DICOM 服务配置数据工厂管道
在此示例中,数据工厂管道用于以 Delta 表格式写入存储帐户的 DICOM 属性、系列和研究。
在 Azure 门户中,打开数据工厂实例并选择启动工作室以开始。
创建链接服务
数据工厂管道从数据源读取和写入数据接收器(通常是其他 Azure 服务)。 这些与其他服务的连接作为链接服务进行管理。
此示例中的管道从 DICOM 服务读取数据并将其输出写入存储帐户,因此必须为这两者创建链接服务。
为 DICOM 服务创建链接服务
在 Azure 数据工厂工作室中,从左侧菜单中选择“管理”。 在“连接”下,选择“链接服务”,然后选择“新建”。
在“新建链接服务”窗格中,搜索 REST。 选择“REST”磁贴,然后选择“继续”。
输入链接服务的名称和说明。
在“基 URL”字段中,输入 DICOM 服务的服务 URL。 例如,
contosohealth
工作区中名为contosoclinic
的 DICOM 服务具有服务 URLhttps://contosohealth-contosoclinic.dicom.azurehealthcareapis.com
。对于“身份验证类型”,请选择“系统分配的托管标识”。
对于“AAD 资源”,请输入
https://dicom.healthcareapis.azure.com
。 对于所有 DICOM 服务实例,此 URL 相同。填写必填字段后,选择“测试连接”以确保正确配置标识的角色。
连接测试成功后,选择“创建”。
为 Azure Data Lake Storage Gen2 创建链接服务
在数据工厂工作室中,从左侧菜单中选择“管理”。 在“连接”下,选择“链接服务”,然后选择“新建”。
在“新建链接服务”窗格中,搜索 Azure Data Lake Storage Gen2。 选择 Azure Data Lake Storage Gen2 磁贴,然后选择“继续”。
输入链接服务的名称和说明。
对于“身份验证类型”,请选择“系统分配的托管标识”。
通过手动输入存储帐户的 URL 来输入存储帐户详细信息。 另外还可以从下拉列表中选择 Azure 订阅和存储帐户。
填写必填字段后,选择“测试连接”以确保正确配置标识的角色。
连接测试成功后,选择“创建”。
为 DICOM 数据创建管道
数据工厂管道是执行任务(如将 DICOM 元数据复制到 Delta 表)的活动的集合。 本部分详细介绍了如何创建一个管道,该管道定期将 DICOM 数据同步到 Delta 表,因为数据将添加到 DICOM 服务、更新和删除数据。
在左侧的菜单中选择“创建者”。 在“工厂资源”窗格中,选择加号 (+) 以添加新资源。 选择“管道”,然后从菜单中选择“模板库”。
在“模板库”中,搜索 DICOM。 选择“以增量格式将 DICOM 元数据更改复制到 ADLS Gen2”磁贴,然后选择“继续”。
在“输入”部分中,选择以前为 DICOM 服务和 Data Lake Storage Gen2 帐户创建的链接服务。
选择“使用此模板”以创建新管道。
为 DICOM 数据创建管道
如果你使用 Azure Data Lake Storage 创建了 DICOM 服务,而不是使用模板库中的模板,则需要使用自定义模板在元数据管道中包含新的 fileName
参数。 若要配置管道,请执行以下步骤。
从 GitHub 下载模板。 模板文件是压缩 (zip) 文件夹。 无需提取文件,因为文件已经以压缩形式上传。
在 Azure 数据工厂中,从左侧菜单中选择“创作”。 在“工厂资源”窗格上,选择加号 (+) 以添加新资源。 选择“管道”,然后选择“从管道模板导入”。
在“打开”窗口中,选择下载的模板。 选择打开。
在“输入”部分中,选择为 DICOM 服务和 Data Lake Storage Gen2 帐户创建的链接服务。
选择“使用此模板”以创建新管道。
计划管道
管道由“触发器”计划。 有不同类型的触发器。 计划触发器允许触发管道,以便在一天的特定时间(例如每小时或每天午夜)运行。 手动触发器按需触发管道,这意味着管道在需要时运行。
在此示例中,翻转窗口触发器用于在给定起点和定期时间间隔的情况下定期运行管道。 有关触发器的更多|信息,请参阅 Azure 数据工厂或 Azure Synapse Analytics 中的管道执行和触发器。
创建新的翻转窗口触发器
在左侧的菜单中选择“创建者”。 选择 DICOM 服务的管道,然后从菜单栏中选择“添加触发器”和“新建/编辑”。
在“添加触发器”窗格中,选择“选择触发器”下拉列表,然后选择“新建”。
输入触发器的“名称”和“说明”。
选择“翻转窗口”作为“类型”。
若要配置每小时运行的管道,请将“定期”设置为“1 小时”。
展开“高级”部分,输入“15 分钟”的“延迟”。 此设置允许在处理前一小时结束时完成任何挂起的操作。
将“最大并发”设置为“1”以确保跨表的一致性。
选择“确定” 继续配置触发器运行参数。
配置触发器运行参数
触发器定义管道在何时运行。 它们还包括传递给管道执行的参数。 将 DICOM 元数据更改复制到 Delta 模板定义了下表中所述的参数。 如果在配置过程中未提供任何值,则列出的默认值将用于每个参数。
参数名称 | 说明 | 默认值 |
---|---|---|
BatchSize | 一次从更改源检索的最大更改数(最大为 200) | 200 |
ApiVersion | Azure DICOM 服务的 API 版本(最小为 2) | 2 |
StartTime | DICOM 更改的非独占开始时间 | 0001-01-01T00:00:00Z |
EndTime | DICOM 更改的独占结束时间 | 9999-12-31T23:59:59Z |
ContainerName | 生成的 Delta 表的容器名称 | dicom |
InstanceTablePath | 包含容器中 DICOM SOP 实例的 Delta 表的路径 | instance |
SeriesTablePath | 包含容器中 DICOM 系列的 Delta 表的路径 | series |
StudyTablePath | 包含容器中 DICOM 研究的 Delta 表的路径 | study |
RetentionHours | Delta 表中数据的最大保留时间(以小时为单位) | 720 |
在 触发器运行参数 窗格中,输入与先决条件中创建的存储容器名称匹配的 ContainerName 值。
对于 StartTime,请使用系统变量
@formatDateTime(trigger().outputs.windowStartTime)
。对于 EndTime,请使用系统变量
@formatDateTime(trigger().outputs.windowEndTime)
。注意
只有翻转窗口触发器支持系统变量:
@trigger().outputs.windowStartTime
和@trigger().outputs.windowEndTime
。
计划触发器使用不同的系统变量:
@trigger().scheduledTime
和@trigger().startTime
。
详细了解触发器类型。
选择“保存”以创建新的触发器。 选择“发布”以开始在定义的计划上运行的触发器。
发布触发器后,可以使用“触发器”选项手动触发触发器。 如果为过去的值设置了开始时间,管道将立即启动。
监视管道运行
可以在“监视”选项卡上监视触发的运行和其关联的管道运行。在这里,可以浏览每个管道的运行时间以及运行时间。 还可以调试所引发的任何问题。
Microsoft Fabric
Fabric 是一种一体的分析解决方案,位于 Microsoft OneLake 之上。 利用 Fabric Lakehouse,可以在单个位置管理、构建和分析 OneLake 中的数据。 写入 Data Lake Storage Gen2 的 OneLake 外部的任何数据都可以使用快捷方式连接到 OneLake,以利用 Fabric 的工具套件。
创建元数据表的快捷方式
转到在先决条件中创建的 Lakehouse。 在“资源管理器”视图中,选择“表”文件夹旁边的省略号菜单 (...)。
选择“新建快捷方式”以创建包含 DICOM 分析数据的存储帐户的新快捷方式。
选择 Azure Data Lake Storage Gen2 作为快捷方式的源。
选择现有连接,或通过选择要使用的“身份验证类型”创建新连接。
注意
在 Data Lake Storage Gen2 和 Fabric 之间进行身份验证有几个选项。 可以使用组织帐户或服务主体。 不建议使用帐户密钥或共享访问签名令牌。
选择下一步。
输入表示数据工厂管道创建的数据的快捷方式名称。 例如,对于
instance
Delta 表,快捷方式名称可能是实例。输入与“运行参数”配置中的
ContainerName
参数相匹配的“子路径”以及快捷方式的表名。 例如,对 Delta 表使用/dicom/instance
,并在dicom
容器中使用路径instance
。选择“创建”以创建快捷方式。
重复步骤 2 到 9,将剩余的快捷方式添加到存储帐户中的其他 Delta 表(例如,
series
和study
)。
创建快捷方式后,展开表以显示列的名称和类型。
创建文件的快捷方式
如果将 DICOM 服务与 Data Lake Storage 配合使用,还可以为数据湖中存储的 DICOM 文件数据创建快捷方式。
转到在先决条件中创建的 Lakehouse。 在“资源管理器”视图中,选择“文件”文件夹旁边的省略号菜单 (...)。
选择“新建快捷方式”以创建包含 DICOM 数据的存储帐户的新快捷方式。
选择 Azure Data Lake Storage Gen2 作为快捷方式的源。
选择现有连接,或通过选择要使用的“身份验证类型”创建新连接。
选择下一步。
输入描述 DICOM 数据的“快捷方式名称”。 例如 contoso-dicom-files。
输入与 DICOM 服务使用的存储容器和文件夹的名称匹配的“子路径”。 例如,如果要链接到根文件夹,则子路径应该为 /dicom/AHDS。 根文件夹始终为
AHDS
,但可以选择链接到特定工作区或 DICOM 服务实例的子文件夹。选择“创建”以创建快捷方式。
运行笔记本
在湖屋中创建表后,可以从 Fabric 笔记本中查询它们。 可以通过从菜单栏中选择“打开笔记本”,直接从湖屋创建笔记本。
在笔记本页上,湖屋的内容可在左侧查看,包括新添加的表格。 在页面顶部,选择笔记本的语言。 还可以为单个单元格配置语言。 以下示例使用 Spark SQL。
使用 Spark SQL 查询表
在单元格编辑器中,输入 Spark SQL 查询,例如 SELECT
语句。
SELECT * from instance
此查询从 instance
表中选择所有内容。 准备就绪后,选择“运行单元格”以运行查询。
几秒钟后,查询的结果会显示在单元格下方的表中,如下面的例子所示。 如果此 Spark 查询是会话中的第一个查询,则时间可能更长,因为需要初始化 Spark 上下文。
访问笔记本中的 DICOM 文件数据
如果使用模板创建管道并创建了 DICOM 文件数据的快捷方式,则可以使用 instance
表中的 filePath
列将实例元数据与文件数据相关联。
SELECT sopInstanceUid, filePath from instance
总结
本文介绍了如何执行以下操作:
- 使用数据工厂模板创建从 DICOM 服务到 Data Lake Storage Gen2 帐户的管道。
- 配置触发器以按小时计划提取 DICOM 元数据。
- 使用快捷方式将存储帐户中的 DICOM 数据连接到 Fabric Lakehouse。
- 使用笔记本查询 Lakehouse 中的 DICOM 数据。
后续步骤
注意
DICOM® 是美国电气制造商协会的注册商标,适用于其有关医疗信息数字通信的标准出版物。