问题标签 [etl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2736 浏览

.net - 对于开发人员来说,学习/使用 SSIS 是否值得?

在我目前的工作中,我开始参与相当多的 ETL 工作,而且每个人似乎都非常偏爱 SSIS。我正在努力尝试通过 BI 工作室进行最微不足道的转换,这通常等同于带有少量 LINQ 的几个 foreach 循环。我不确定这个工具对哪些用例或用户有用,并且可能会让管理层相信我可以不用。提出我的理由的最佳方法是什么,或者如果有任何关于更好工具的建议,我也将不胜感激。

0 投票
6 回答
725 浏览

database - 不同分辨率的数据

我有两个表,记录从外部源源不断地插入到这些表中。假设这些表保存了用户交互的统计信息。当用户单击按钮时,该单击的详细信息(用户、单击时间等)将写入其中一个表。当用户将鼠标悬停在该按钮上时,会将带有详细信息的记录添加到其他表中。

如果有很多用户不断地与系统交互,就会产生大量的数据,并且这些表会大大增加。

当我想查看数据时,我想以每小时或每天的分辨率查看它。

有没有一种方法或最佳实践可以在所需的分辨率中以增量方式(随着数据的收集)不断总结数据?

或者有没有更好的方法来解决这类问题?

PS。到目前为止,我发现像 Talend 这样的 ETL 工具可以让生活变得轻松。

更新:我目前正在使用 MySQL,但我想知道无论数据库、环境等如何的最佳实践。

0 投票
1 回答
599 浏览

design-patterns - 设计多输入/多输出系统

背景

我正在绘制一个需要执行此类操作的应用程序

所讨论的数据库都是相同类型的,但具有不同的表和结构。要加载的对象都是某种类型的产品。这些文件具有相似的结构但不一定相同,有些是 xml,有些是 csv 等。

自定义应用程序是为了确保用于操作从关系数据中检索的对象的一致接口。它是一个简单的 Web 应用程序,每个产品都有几个选项和产品的分页显示。它将附加数据添加到通过 ORM 持久化的每条记录。

应用程序的每个实例中只有一个数据库处于活动状态,但是可以激活许多文件格式。这些文件的写入是同时进行的。

问题

我一直在努力寻找设计转换步骤的最佳方法。

是否有一种模式可以设法将不同的模式组合成一个模型?这里假设只有所有数据库中存在的字段才应该最终出现在模型中。

反过来呢?何时将产品对象写入文件?

我已经研究过不同的模式,例如策略模式,但我仍然没有看到所有的点点滴滴似乎都到位的那一刻。

对于它的价值,应用程序本身很可能是用 PHP 编写的。

0 投票
10 回答
3518 浏览

c# - 单元测试大块代码(映射、翻译等)

我们对大部分业务逻辑进行单元测试,但仍停留在如何最好地测试我们的一些大型服务任务和导入/导出例程上。例如,考虑将工资单数据从一个系统导出到第 3 方系统。为了以公司需要的格式导出数据,我们需要访问大约 40 个表,这为创建测试数据和模拟依赖关系创造了一个噩梦。

例如,考虑以下内容(约 3500 行导出代码的子集):

我们在这个特定的导出类中只有一个公共方法——ExportPaychecks()。对于调用此类的人来说,这确实是唯一有意义的操作……其他一切都是私有的(约 80 个私有函数)。我们可以将它们公开以进行测试,但随后我们需要模拟它们以分别测试每一个(即,如果不模拟 WriteHeaderRow 函数,您将无法在真空中测试 ExportPaychecks。这也是一个巨大的痛苦。

由于这是一个单一的导出,对于单一供应商来说,将逻辑移入域是没有意义的。该逻辑在这个特定类之外没有领域意义。作为测试,我们构建了具有接近 100% 代码覆盖率的单元测试……但这需要输入到存根/模拟对象中的大量测试数据,加上由于存根/模拟我们的许多依赖项而产生的超过 7000 行代码.

作为 HRIS 软件的制造商,我们有数百个出口和进口。其他公司真的对这类事情进行单元测试吗?如果是这样,有什么捷径可以减轻痛苦吗?我很想说“没有对导入/导出例程进行单元测试”,稍后再实施集成测试。

更新- 感谢所有的答案。我很想看到一个例子,因为我仍然没有看到有人如何将大文件导出之类的东西变成易于测试的代码块,而不会使代码变得一团糟。

0 投票
1 回答
951 浏览

ruby-on-rails - 用于将数据加载到 Rails 应用程序的 ETL 框架

我需要将我的 Rails 应用程序的数据从多个提供程序(基于 REST/SOAP 的 XML 提要)定期加载到数据库中。我编写了一组 Rake 任务,这些任务由每当生成的 cron 作业启动。每个任务都会访问合作伙伴提要端点,解析提要并将其加载到数据库中。

我应该使用 ActiveWarehouse ( http://activewarehouse.rubyforge.org/etl/ ) 之类的 ETL 框架,而不是编写 Rake 任务吗?关于在 Rails 中执行此操作的最佳方法有什么建议吗?

0 投票
2 回答
140 浏览

data-warehouse - 什么时候从 OLAP DB 中删除数据?

我是 OLAP 的新手。

我了解表结构和 ETL 过程。

我不明白什么时候应该从事实表中删除数据。假设我正在为事件创建一个报告应用程序。每个事件都有完成所需的持续时间、退出代码和读取的总字节数。有几个维度,例如时间和位置。

假设我每天为我的事实表准备 100 万条新记录,总共 1 GB。如果我的 ETL 流程只将数据添加到我的事实表中,它会无限增长。我应该什么时候从我的事实表中删除数据?我应该把数据分成几个事实表(例如月表)吗?

有没有经验法则?

谢谢

0 投票
6 回答
6297 浏览

c# - 在 C# 中读取制表符分隔的文本文件的最佳方法是什么

我们有一个大约 100,000 行的文本文件,每行大约 50 列,大部分数据都很小(5 到 10 个字符或数字)。

这是一个非常简单的任务,但只是想知道将这些数据导入 C# 数据结构(例如 DataTable)的最佳方法是什么?

0 投票
2 回答
6222 浏览

powershell - 在 Powershell 中,按记录类型拆分大型文本文件的最有效方法是什么?

我正在使用 Powershell 进行一些 ETL 工作,读取压缩文本文件并根据每行的前三个字符将它们拆分。

如果我只是过滤输入文件,我可以将过滤后的流通过管道传输到 Out-File 并完成它。但我需要将输出重定向到多个目的地,据我所知,这不能用简单的管道完成。我已经在使用 .NET 流读取器来读取压缩的输入文件,我想知道是否还需要使用流写入器来写入输出文件。

天真的版本看起来像这样:

这看起来像是个坏消息:每行查找、打开、写入和关闭文件一次。输入文件是巨大的 500MB+ 怪物。

有没有一种惯用的方法可以使用 Powershell 结构有效地处理这个问题,还是应该求助于 .NET 流编写器?

我可以为此使用 (New-Item "path" -type "file") 对象的方法吗?

编辑上下文:

我正在使用DotNetZip库将 ZIP 文件作为流读取;因此streamreader而不是Get-Content/ gc。示例代码:

我可能应该Dispose()同时使用 $zipfile 和 $reader,但这是另一个问题!

0 投票
1 回答
1475 浏览

web-applications - 用于基于 Web 的数据导入和 ETL 的模块或工具?

我将向 Web 应用程序添加一项功能,允许用户导入数据。我不想重新发明轮子,所以我正在寻找我可以集成的任何模块来处理这个问题。

该界面应该类似于将文件导入 Excel 或 Access 的界面,加上一些通常在 ETL 软件中发现的更复杂的映射和类型转换功能。

一般流程:

  1. 上传文件(CVS、Excel 等)
  2. 预览文件中的数据——使用第一行作为列名,然后显示前 N 条记录,以便用户可以验证文件是否已正确解析
  3. 显示映射界面以选择源列与目标的匹配方式
  4. 处理导入并验证数据
  5. 提供导入失败的数据报告,并可选择下载仅包含失败行的文件
0 投票
2 回答
1042 浏览

sql-server - SQL Server Integration Services (SSIS) 每次运行时都会重新编译 C# 代码吗?

我们有一个实时获取数据并将记录添加到数据库的过程。我们使用 SQL Server 2008 集成服务来运行我们的提取转换加载 (ETL) 过程。我们从 FTP 站点下载大约 50 个文件,对其进行处理,然后将文件归档。

问题是处理每个文件大约需要 17 秒,即使文件非常小(大约 10 行)并且处理代码相当简单。查看机器上的负载,它受 CPU 限制,网络、磁盘或内存上的流量并不多。

我怀疑 SSIS 可能会在每次运行时重新编译 C# 代码。有没有人遇到过类似的问题?或者您是否使用过类似的过程而没有问题?

是否有任何工具可以让我们分析 dtsx 包?