AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[etl](dba)

Martin Hope
Student
Asked: 2021-10-22 14:19:23 +0800 CST

在批量更新期间选择 MySQL 行

  • 0

我目前有一个包含 500K 行的数据库,未来可能会增长到 300 万行。表的结构如下所示:

-id
-price
-sku
-version(由日期时间字符串表示,即 20211012)

我有一个 ETL 作业,它将每晚更新价格和版本列,只有 UPDATE 语句,没有 INSERT 和 DELETE。我的问题是为了显示该项目,我需要按 sku 和版本进行查询。在 ETL 作业运行之前,一切正常。但是,当 ETL 作业开始批量更新行时,版本会发生变化,并且由于版本不匹配,我不再能够选择该特定 sku。

我解决此问题的想法是跟踪 ETL 作业执行的先前和当前版本(即 20211012 和 20211013),以便在记录已更新或回退到先前版本时尝试选择当前版本如果 ETL 作业尚未更新该特定对象。

有什么我应该注意的陷阱吗?如果我对 ETL 作业同时更新的特定记录执行 SELECT 会发生什么?

mysql etl
  • 2 个回答
  • 51 Views
Martin Hope
e_i_pi
Asked: 2021-04-29 15:38:35 +0800 CST

“ETL vs ELT”只是“表格 vs 视图”吗?

  • 1

TL;博士; ETL 和 ELT 之间的区别仅仅是转换后的数据在加载到仓库之前是具体还是抽象?

所以请原谅我的主题标题过于宽泛,因为它掩盖了细节,但我试图以明确的方式理解 ETL 和 ELT 的不同之处。它们看起来非常相似,以至于您可以将它们描述为 ELTL。在这两种情况下,您都从原始数据开始,最终以表格中的具体转换数据结束。似乎介于两者之间的是差异,它可以采取多种形式,具体取决于从开始状态到结束状态的转换的数量/复杂性。

根据我对ETL的了解,步骤如下:

  1. 从源系统中提取数据并加载到原始表中
  2. 将原始表中的数据转换为临时表
  3. 将临时表中的数据加载到您的仓库中

在我见过的一些 ELT 定义中,这些步骤似乎是:

  1. 从源系统中提取数据并加载到原始表中
  2. 通过创建表示临时表的视图从概念上转换原始表中的数据
  3. 将暂存视图中的数据加载到您的仓库中

但是后来我看了其他关于ELT的文章,好像是:

  1. 从源系统中提取数据并加载到原始表中
  2. 通过创建表示临时表的视图从概念上转换原始表中的数据
  3. 恭喜,不再有从原始状态到转换状态的数据硬复制,一切都是视图!用户只需启动他们的查询并立即查看嵌套的n级*返回数据!

*结果可能会有所不同,具体取决于您是否有数百万美元可用于云处理和/或大规模量子计算是否可用

etl data-warehouse
  • 1 个回答
  • 303 Views
Martin Hope
Exostrike
Asked: 2018-10-03 01:09:59 +0800 CST

将 auto_increment 重新播种到特定数字?

  • 1

是否可以将表的标识列设置为从特定值开始?

我正在将 ETL 阶段从 mysql 转换为 sql server 数据库,其中临时数据库从主数据库中的最大值(不是自动递增)开始加载具有唯一 ID 的记录。mysql是这样的:

SET @s = Concat('alter table table_1 auto_increment=',coalesce(@indexmaxt,0)+1);

理想情况下,这就是我想要做的:

DBCC CHECKIDENT (table_1 , RESEED, @indexmaxt+1)

这在 SQL Server 中是可能的还是不可能的

sql-server etl
  • 1 个回答
  • 902 Views
Martin Hope
Yoshi
Asked: 2018-07-12 23:18:15 +0800 CST

使用数据仓库提供重组的非 BI 数据是否是一种不好的做法?

  • 2

主要目标是案例优化的数据表示。这个想法是从多个数据库收集数据,将数据保存在数据仓库中,并重组/连接数据集市中的数据(类似于跨多个数据库的视图)。基本上,目的是让访问分布在数据库中的数据变得更容易。

数据集市

正如您在图片中看到的那样,计划是拥有依赖数据集市(显示在图片的上半部分)以避免像独立数据集市(显示在图片的底部)那样具有多个清理和加载进程。数据仓库的 BI 方面也将被使用,但与我的问题无关。只会更改数据库中的数据。DW 中表示的数据仅供阅读之用。所以基本概念是没有伤害的。但我仍然觉得 DW 在这里被滥用了。

要回答我的问题,请包括以下几点:

  • DW 是否被滥用?
  • 是否有任何 DW 具有适合(接近)实时功能的数据连接器?
  • 哪些替代方案可以满足这些要求,以连接来自多个数据库的数据,并以干净和结构化的方式实时表示它们,而无需大量的清理和加载过程?
etl data-warehouse
  • 1 个回答
  • 131 Views
Martin Hope
johnny
Asked: 2017-10-13 08:26:05 +0800 CST

ELT 数据最终会出现在 RDBMS 中吗?

  • 1

我想我在混淆事情。

在ETL中,数据转换从A数据库开始,到B数据库结束,都是关系型数据库。也许我有一个20岁的系统。我使用 ETL 来获取两个数据库之间的数据。我不知道ETL还有什么用。

在 ELT 中,除了数据库A 中的数据永远不会在数据库 B 中结束之外,是否相同?相反,原始数据位于数据库 A 的服务器B上的表或其他数据结构中,但需要类似 Hadoop 的东西将数据转换为专门设计用于使用 Hadoop 的应用程序?

编辑:我又做了一次。Hadoop!= ELT。我只关注 Hadoop,并认为它是 ELT 或它的表现形式。编辑:那个 ELT 意味着你需要一个独特的非 RDBMS 文件数据结构而不是 RDBMS,你完全抛弃了 RDBMS。

etl
  • 5 个回答
  • 875 Views
Martin Hope
Rachel Ambler
Asked: 2017-03-17 08:55:23 +0800 CST

您可以使用 ODBC 直接从 SAP HANA S/4 1610 中提取数据吗?

  • 2

试图了解 SAP Hana S/4 1610 的可能性和不可能性。

我的理解是,只需使用安装所需 ODBC 驱动程序的 SAP HANA 客户端,即可通过 ODBC 访问底层 SAP HANA 数据库。安装后,根据我的阅读,可以使用 SSIS 等工具通过标准 ODBC 调用访问为 SAP ERP 提供支持的大量数据存储。

但是,我被告知来自其他人的相互矛盾的信息,关于这是否可能,并且真正需要的是供应商控制该过程并让他们在 ABAP 中编写将询问底层数据库并交付的应用程序我们的 ETL 过程将使用这些平面文件。

我们将使用本地托管的 SAP HANA 安装,所以不是在本地,但也不是多云的。

澄清:我在这里只需要一个是的,您可以通过 ODBC 连接到 SAP HANA S/4 1610 或否,您不能,需要另一种方法。

TBH 对两者都不是很感兴趣,因为我在网上阅读的所有其他内容都告诉我这一点。然而,当你有每小时 100 亿美元的顾问说不时,人们不得不质疑现实。

etl odbc
  • 1 个回答
  • 2473 Views
Martin Hope
seadragon
Asked: 2016-04-28 18:17:04 +0800 CST

捕获维度层次结构中级别之间历史变化的最佳方法

  • 2

捕捉维度层次结构中级别之间变化的最简洁的方法是什么?

我有维度层次结构 [Area] > [Region] > [Location],其中 Area 是 Region 的父级,Region 是 Location 的父级。位置是层次结构的最低级别,并与事实表相关联。

业务规则是: 位置能够根据业务需要更改分配到的区域。此外,区域能够更改它们分配到的区域。

我们希望捕获这些变化,以便在进行历史分析时,我们可以比较位置更改其区域之前和之后的业务指标,以及区域更改其区域之前和之后的业务指标。

做这个的最好方式是什么?

我提出的四种方法似乎都有很大的缺点:

  1. 在层次结构级别之间使用桥接表需要您使用时间界限(有效的开始/结束日期)在您向上走层次结构时正确识别孩子属于哪个父级。这使得查询容易出错,尤其是对于具有多个级别的层次结构。
  2. 每当子记录与父记录的关系发生变化时,对子记录进行版本控制(例如,当区域 A 从区域 A 移动到区域 B 时对区域 A 进行版本控制),然后将更改一直沿层次向下级联(例如,创建与区域 A 相关联的位置的新版本以便它们与新的区域 A) 相关联。
  3. 更新子记录对父记录的引用,使您使用时间限制来重新组装正确的历史记录(容易出错)。
  4. 在向上查询层次结构时始终使用时间界限,以确保在分析事实时位置 A 与正确的区域相关联(同样,区域 A 与正确的区域相关联)。

这些对我来说似乎都不干净。

有没有更好的办法?

非常感谢

etl data-warehouse
  • 2 个回答
  • 2490 Views
Martin Hope
Justin Dearing
Asked: 2015-07-02 18:09:56 +0800 CST

设置 logparser 创建的表中某列的列宽

  • 1

我正在尝试将 LogParser 用于 ETL。我正在尝试使用以下命令导入此文件:

"c:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "SELECT Field1 AS CountryCode, Field2 AS Zip INTO ZipCodes FROM 'c:\Users\jdearing\Downloads\us.txt'" -i:TSV - headerrow:OFF -o:SQL -server 。-数据库 LogParserTest -createtable -cleartable

它像这样创建一个表:

CREATE TABLE [dbo].[ZipCodes](
    [CountryCode] [varchar](255) NULL,
    [Zip] [int] NULL
);

如果我将命令更改为

"c:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "SELECT Field1 AS CountryCode, TO_STRING(Field2) AS Zip INTO ZipCodes FROM 'c:\Users\jdearing\Downloads\us.txt'" -i :TSV -headerrow:OFF -o:SQL -server 。-数据库 LogParserTest -createtable -cleartable

它创建下表: CREATE TABLE [dbo].[ZipCodes]( [CountryCode] varchar NULL, [Zip] varchar NULL );

所以TO_STRING(Field2) AS Zip INTO ZipCodes创造[Zip] [varchar](255) NULL。

然而,我的目标是使结果表成为:

CREATE TABLE [dbo].[ZipCodes](
    [CountryCode] [char](2) NOT NULL,
    [Zip] [char](5) NOT NULL
);

两列都保持 VARCHAR(255) NULL,带有 SUBSTR,如下所示:

SUBSTR(Field1, 0, 2) 作为国家代码,SUBSTR(TO_STRING(Field2), 0, 5) 作为 Zip

如何让 LogParser 创建具有固定长度 NOT NULL char 列的表?

etl logparser
  • 1 个回答
  • 225 Views
Martin Hope
Lilantha Lakmal
Asked: 2015-05-13 00:27:31 +0800 CST

如何将 .dat 文件加载到 oracle 数据库

  • 1

我有从电信交换机中提取的 .DAT 文件。

我想使用 IBM 数据阶段 ETL 工具将此文件上传到 Oracle 服务器。

不幸的是,这些文件不是可读格式。

这是在记事本中打开 .DAT 文件时的图片:

在此处输入图像描述

etl data-warehouse
  • 1 个回答
  • 1629 Views
Martin Hope
Mihir Chittora
Asked: 2015-02-17 03:29:05 +0800 CST

如果不匹配,SSIS 导入数据或插入数据

  • 1

我有一种情况,我需要将数据从一个表导入到另一个表。这里的挑战是在表中,我有一些列是对其他表值(外键的一种)的引用。我需要匹配这些引用列,如果字段匹配,我需要映射相应的 id,否则我需要在引用表中插入该值,然后在源表数据源中映射 id 并导入所有数据。

详细说明我的问题:

带查找的 ETL

这就是我的 ETL 的样子。目前我正在“查找匹配”中继续执行,但如果“查找不匹配”,我还需要在相应的表中创建新记录。(对于我正在做的所有 8 次查找,我都需要这样做)。我不明白如何按顺序执行所有这些并在最后阶段导入所有数据。

etl ssis
  • 2 个回答
  • 11114 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve