使用内部包、RStudio包管理器和RStudio Connect构建健壮的、模块化的仪表板英格兰vs伊朗让球

通过 艾伦·卡尔森商业智能(BI)团队的技术主管

这种事在你身上发生过吗?


您被分配维护一个仪表板,您的团队中有人慷慨地给您留下了这个仪表板,该仪表板的用户要求您添加一个新特性。很好,你认为。“这个仪表盘的数据看起来并不复杂。我将填补某某人留下的空白,轻松添加该功能!”

当您意识到上一个开发人员的编码方式与您完全不同时,几分钟很快就变成了几个小时。光是理解他们的代码要做什么就需要几天的重构,更不用说添加新特性了。最终,您销毁了他们的整个仪表板,并决定重新构建它。

或者你可能雇佣了一些以前从未与{shiny}合作过的新开发人员。您能相信您所接受的培训(如果有的话)是足够的,并将使他们能够独立地构建可用于生产的仪表板吗?

这是我们团队几年前面临的双重挑战。我们需要彻底改造旧的仪表盘,同时培训员工如何构建工具,帮助推动对公司的见解。我们很快意识到,我们需要减少为新成员构建仪表板框架的时间,并确保任何接管另一个仪表板的人都可以轻松地修改它们。

我们朝着可复制的开发工作流的旅程


开源的主要优势之一是庞大的社区,可以广泛共享知识。社区成员协作开发帮助解决问题的工具。共享这些工具可以让其他人从他们的贡献中受益。

我们的旅程始于{傀儡},一个由伟大的团队建立的开源软件包ThinkR.在较高的层次上,{golem}将你的Shiny dashboard变成了一个包框架,并允许你像开发R包一样开发和部署它们。这允许更好的文档、测试、健壮性等。这是一个很好的工程仪表盘框架。然而,概念本身可能是复杂的和技术性的。那时,我们知道这将很难解释(和实现)我们的新开发人员。

在惊人的{golem}包的基础上,我们创建了一个包装器,它抽象了它的技术方面,并为我们的开发工作流设置了默认值。我们还设置了包括公司品牌的默认值。我们将这个新的内部包命名为{graveler}。

使用{graveler}建立一个Shiny仪表板框架


关于{砾石}的信息可以在GitHub库.使用devtools安装包:

“‘R devtools: install_github(“ghcarlalan /砾石”)' ' '

打开新项目时会出现一个新选项。您可以在这个对话框中设置包名、用户名和显示标题。

视频打开砾石机项目

创建这个项目将包括创建初始仪表板和主题所需的所有文件。你会看到三个打开的文件:

  • 01 _dev。R
  • run_dev。R
  • 02 _deploy。R

第一个文件设置部署的依赖项。其中包括运行仪表板(golem)所需的库。config'系统文件,一个'app.R'文件部署到RStudio Connect上,以及一个man英格兰vs伊朗让球ifest文件在RStudio Connect中使用git支持的内容。您可以调整它们以适应您的工作流程。

处理完这些步骤后,执行'run_dev '。R' file, and you will have your very own Shiny dashboard skeleton set up with minimal effort!

视频run_dev运行。R

第三个文件有我们用来添加的帮助函数环境变量以编程的方式对我们发布的工作。

要在仪表板上添加一个新的标签/模块,你可以运行'graveler::level_up(name = " foo ")'。这将为仪表板创建一个模块,其中包含UI和服务器代码的部分。在每个模块的底部,你会看到三行代码,你将复制并粘贴到各自的系统文件中:'body。R”、“app_server。R', and 'sidebar.R'. The 'level_up()' function also creates a 'fct' file per {golem}’s recommendation, which incentivizes you to build functions for your dashboard modules to streamline debugging and testing.

从那时起,就只剩下构建模块和使用团队使用的任何工作流发布的问题了。

视频运行样本砾石应用程序

使用RStudio工具共享和发布仪表板英格兰vs伊朗让球


在Snap,我们使用英格兰vs伊朗让球RStudio的git支持的发布特性在我们的团队中无缝修改仪表板,并发布到RStudio Connect。英格兰vs伊朗让球我们有两个RStudio英格兰vs伊朗让球 Connect服务器:产品和开发,它允许我们测试特性或编码方法,而不会干扰涉众看到的内容。英格兰vs伊朗让球RStudio包管理器帮助我们共享内部创建的包(如{graveler}),并确保我们在工作中使用相同的包/函数。

使用RStudio工具共享和发布仪表板英格兰vs伊朗让球


有了{砾石}、RStudio包管理英格兰vs伊朗让球器和RStudio Connect,开发人员将更多的时间花在实际开发上,而不是花时间尝试创建一个Shiny框架。更重要的是,他们都以同样的方式构建仪表板,减少了技术债务,简化了代码审查。引入新的开发人员,将他们集成到我们的工作流程中,并让他们几乎立即对{golem}和{砾石}的BI工作做出贡献,这对我们的团队、我们的代码库和我们的高级开发人员的心智都是一个巨大的优势。

英格兰vs伊朗让球RStudio为使用R和Python的数据科学团队提供了开源和企业级的专业软件。