商业用户上传Data Lake ETL输入的解决方案



问题

我认为这是一个非常常见的问题,希望有我们可以重用的解决方案/方法。

我们正在Azure ADLS gen2中构建数据湖,具有单向数据流:Nifi/ADF -> ADLS -> ETL/Spark/Databricks -> Data Warehouse -> Power BI。一些ETL输入应由负责的业务用户每周/每月加载/更新。

您能否为业务用户提供建议/改进解决方案,以上传ETL输入,并满足以下要求

要求

  1. 用户友好界面
  2. 正在分析/验证。在上传过程中,我们必须确保数据符合预期格式
  3. 审核日志记录。我们必须有能力跟踪谁以及何时装载什么。如果出现一些延迟,应发送通知
  4. 实现简单,符合当前体系结构

需求成就估计从1(非常糟糕的实践方法(到5(100%干净,易于实现的解决方案(。

可能的解决方案

  1. 将文件从Power Apps上载到数据仓库
    流程:Business users -> Power Apps -> Data Warehouse & Stored Procedures -> ADLS -> Spark -> Data Warehouse -> Power BI

    • 1要求=5。使用Power Apps构建的非常用户友好的界面
    • 2要求=2。SQL存储过程中验证/转换的实现较差。所有其他应用程序代码都是用Spark编写的
    • 3要求=3-5。还不知道如何实现这一点
    • 第4个要求=2。数据流变为双向意味着CCD_ 3。更难推理和策划
  2. 在ADLS事件/触发器上使用Spark/Databricks
    流程:Business users -> Microsoft Storage Explorer app -> ADLS gen2 -> Azure Blob Storage trigger -> Azure Function -> Spark parsing/validation job -> ADLS gen2

    • 第一个要求=3-4。通过Storage Explorer上传非常方便用户,唯一的问题是通知用户成功/失败的机制可以通过电子邮件完成,可能不太清楚
    • 第二个要求=5。我喜欢ETL端的解析/验证,而不是数据仓库存储过程
    • 第三个要求=1-3。目前实现这一目标还不是很热门。预计它会比Power Apps更糟糕
    • 第4个要求=4。单向进程,数据不会从DW移动到data Lake。4而不是5,因为对于业务用户来说,成功/失败通知将通过电子邮件发送还不是很清楚。实现的复杂性也稍微大一点

场景

我知道您正在寻找一个单向ETL过程/架构,它具有以下功能(按优先级排序(:

  • 用户友好
  • 验证输入数据
  • 使用SQL存储过程解析输入数据
  • 使用Azure Data Lake Storage(ADLS(实现起来很简单
  • 通过记录谁上传了什么以及何时上传到数据湖,至少提供了基本的审计功能

用户友好的定义也有点模糊,因为用户最终会习惯于使用不直观的工具——例如,你可以强迫他们参加课程。我知道商业用户对使用Power BI一点也不感兴趣,但他们没有任何选择使用它。

建议

我的总体经验是,根据业务需求定制的前端会让用户比让他们使用一把巨大的一体式瑞士军刀更快乐,而这把军刀在用户的日常业务中只使用了一些功能。我从未见过PowerApps被使用,但我从他们的网站和https://alternativeto.net/software/microsoft-powerapps/这是某种低代码的应用程序/UI构建平台。

我个人喜欢拥有大型用户社区的低代码工具,例如Tableau、Qlik或Appian。我与它们中的任何一个都没有关联,但我很快就将它们全部连接到了SQL数据库,这就是我提到这三个数据库的原因。

你说

Storage Explorer具有足够的用户友好界面,并且实现成本为零。唯一关心的是验证反馈和审计。为了减少验证,我们可能会为业务用户创建一些Excel模板之王。

所以我想你可能会选择这个解决方案,但我永远不会牺牲审计。与备份类似,人们通常只有在发生事故时才知道没有备份或审计的真正成本是多少。在发生网络攻击或白领犯罪的情况下,企业通常非常需要日志文件。

最新更新