问题标签 [sql-data-warehouse]

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 投票
1 回答
402 浏览

sql - 在 SELECT 语句中动态设置变量

我有一个 SQL 数据库,其中包含多个 SAP 数据表和一个如下所示的 SQL 语句:

问题是我COUNT(AFRU.RUECK) AS "No. of Confirmations",返回的值不正确,我相信这与我的一个联接有关,但我不确定。

无论如何,我将 select 语句更改为:

效果很好,正是我想要的。然而,这不是选择数据的最有效方式。由于更改,该语句需要大约 10 分钟才能运行。

所以我试图将其从上面更改为:

为了消除额外SELECT的 s,使用我在 main 上方声明的变量SELECT- DECLARE @confs int;

但是,我面临一条错误消息,说:

消息 141,第 15 级,状态 1,第 3 行

为变量赋值的 SELECT 语句不得与数据检索操作结合使用。

我怎样才能解决这个问题?甚至有可能解决这个问题吗?

我见过的在 SQL 中声明变量的每个示例都排除了动态 where 子句。我特别需要引用另一个表AFRURUECKAFVC

编辑:

基于上面的 SQL 代码(在我进行任何更改之前),这是我的完整输出示例:

我的AFRU表是这样的(确认号0007566152):

在我上面的例子中,“确认次数”是3,但表实际上包含 6 条记录,这意味着 的值3不正确,它实际上应该说6

在我的最佳结果中,我希望看到该特定记录的值为 6,而不是 3。

0 投票
1 回答
188 浏览

sql - 在 SQL Server 中使用 CTAS 将数据从具有不同列名的源映射到现有 SQL 表

设想:

是源表SourceData (名称、编号、日期)

是否存在表ProdData (ProdName、ProdNumber、CreatedDate)

要求:

如果产品数据中已经存在,请勿从源导入!!!

将行从源导入到产品数据,保留现有行,追加新行,映射列,例如:

  • 名称 -> 产品名称
  • 编号 -> 产品编号
  • 日期 -> CreatedDate(如果 Date NULL 添加 SystemDate 时间

输出数据示例:

源数据

产品数据

0 投票
1 回答
80 浏览

azure-sqldw - Azure SQLDW 中的 tempdb 使用情况

我可以每 30 分钟跟踪或获取一份报告,以按用户 ID 汇总 AZureSQlDW 的 tempdb 使用情况吗?

任何建议都非常感谢

谢谢,切瑞斯玛。

0 投票
0 回答
190 浏览

database-design - 涉及多个源表的 Kimball 模型中的历史负载 SCD2

我热衷于找到一个有效的设计解决方案,Ralph Kimball 的模型建议处理 SCD 类型 2 维度的历史负载,涉及多个源表,而不使用 PIT 表。

源数据由许多启用 CDC 的表组成,其中有几个日内更改。目标数据仓库预计每天都有粮食。

在过去,我使用过时间点 (PIT) 表,它使用维度构建所涉及的源表的业务键来构建日终快照。当涉及的源表既宽又深时,这极大地优化了维度加载能力。我的组织更喜欢使用 Kimball 的方法,因为 PIT 是一个 DV 概念,因此它是脱离桌面的。

请分享替代方法。您可能使用过的一些通用示例或任何有用的提示将很高兴听到。


绝对我理解 PIT 可以很好地加载初始加载的历史数据(不幸的是,Kimball 似乎没有提到它,因此解决方案设计者并不热衷于允许使用 PIT 加载)

例如,我必须创建一个具有属性 Member_Status 的成员维度,该属性是根据成员在给定时间点持有的所有帐户派生的。

举一个非常简单的例子,假设:在给定日期 D1 一个成员有 1 个打开和 1 个关闭的帐户 成员状态是:第二天活动 D2,他有 2 个关闭的帐户,成员状态是:第二天退出 D3,他打开另一个账号,会员状态为:再次活跃

现在必须回顾性加载整个内容(例如,过去 10 年的数据作为 SCD2) 我可以在其中看到 2 个选项

  1. 从开始日期开始每天循环运行负载(不是有效的解决方案)
  2. 创建一个 PIT(不允许:()

还有其他选择吗?


“源数据由许多启用 CDC 的表组成,其中有几个日内变化。目标数据仓库预计会有一个每日粒度。”只是为了解释这一点

说有一个member(实体)和account(实体) Member:Account的关系是1:Many

在一天中,成员可以进行多次更新(例如更正姓名、出生日期、地址等)对于帐户来说也是如此,CDC 将捕获所有这些更改,而对于目标 DWH,只需要捕获一天结束的快照。实现它并不是一个很大的障碍,我的主要问题围绕初始负载和处理它的有效策略。

0 投票
2 回答
217 浏览

sql-server - 如何在维度表中查找未使用的行

我的数据库中有一个维度表变得太大。我的意思是它有太多的记录——超过一百万——因为它的增长速度与关联的事实相同。这主要是由于设计不好,我正在尝试清理它。

我尝试做的一件事是删除不再使用的维度记录。定期维护事实表并删除旧快照。因为维度不是这样维护的,所以表中有许多行的主键值不再出现在任何链接的事实表中。所有事实表都有外键约束。

有没有办法找到主键值不再出现在与外键约束链接的任何表中的表行?

我试着写一个脚本来跟踪这个。基本上是这样的:

但是对于很多链接表,这个查询会在一段时间后消失——至少,我的管理工作室崩溃了。所以我不确定是否还有其他选择。

0 投票
1 回答
101 浏览

sql-server - 动态 SSIS 包将 N 个表从 Oracle 加载到 SQL

我们在 Oracle 服务器上有 N 个表,我们希望将所有这些表从 Oracle 加载到 SQL 服务器。我们正在为其创建动态 SSIS 包,它将采用 Oracle 服务器名称、数据库名称、模式名称、表列表等,并将所有这些表加载到 SQL 服务器。我们为 Oracle 添加了 SQL Server 上的链接服务器 (SSMS)。

但是我们没有得到有效的方法来做同样的事情。我们如何在单个 SSIS 包中实现这一点。我们如何处理 Oracle 表的元数据并在 SQL 服务器上创建相同的元数据?这个 SSIS 包也应该在 SQL 服务器上动态创建表,为此我们在 SSIS 包中尝试了临时表。

0 投票
0 回答
89 浏览

sql - 在数据仓库中创建持久密钥

在维度项目中,有项目编号和项目名称可以随时间变化的业务逻辑。不幸的是,我无法直接从源系统获得任何持久密钥。有没有办法处理这种情况?如何生成项目 ID 列 - 在此示例中充当持久键?

请参阅所需的维度结构。

昏暗项目

项目 ID - 不是来自源系统的持久密钥,我需要生成它。

0 投票
1 回答
18 浏览

etl - 如果维度/事实表中的数据未正确加载,我需要执行哪些步骤来清理数据

假设有一个场景,数据加载到事实表\维度表中,经过分析发现有1亿条记录被错误加载,我需要执行哪些步骤才能正确清理数据。

0 投票
2 回答
62 浏览

oracle - ORA-00904: "S"."AIR_TIME": 标识符无效

为什么在距离和 air_time 列中使用 sum 时,此代码显示无效标识符?当 sum 未成功使用此语句处理但使用 sum 我得到错误?我需要在这个语句中使用 sum。

0 投票
1 回答
44 浏览

ssis - 如何替换“?” 在 SSIS 表达式中使用 NULL?

有 ?在我的数据列中,我必须用 NULL 替换它们。在我的 SSIS 包中。