SQL 数据仓库,需要帮助使用 T SQL SELECT 或更好的替代方案填充我的 DIMENSION?

2023-12-27

我的 SQL Server 中有一个表,我在其中“暂存”来自 ERP 系统的数据仓库提取内容。

从这个暂存表(表名:DBO.DWUSD_LIVE) ,我构建维度并加载事实数据。

示例 DIMENSION 表称为“SHIPTO”,该维度具有以下列:

"shipto_id
"shipto"
"salpha"
"ssalpha"
"shipto address"
"shipto name"
"shipto city"

现在我有一个 SSIS 包,它在上述列中执行 SELECT DISTINCT 来检索“唯一”数据,然后通过 SSIS 包我分配“shipto_id”代理键。

我当前的 TSQL 查询的一个示例是:

SELECT DISTINCT
"shipto", "salpha", "ssalpha", "shipto address", "shipto name", "shipto city"
FROM DBO.DWUSD_LIVE

这很有效,但不是“快速”,某些维度有 10 列,对这些维度进行不同的选择并不理想。

在这个维度中,我的“业务关键”栏目是“运送至”、“SULFA”和“SULFA”.

所以如果我这样做:

SELECT DISTINCT
"shipto", "salpha", "ssalpha"
FROM DBO.DWUSD_LIVE

它产生与以下相同的结果:

SELECT DISTINCT
"shipto", "salpha", "ssalpha", "shipto address", "shipto name", "shipto city"
FROM DBO.DWUSD_LIVE

有没有更好的方法来执行此 SQL 查询?我需要所有列,但只需要业务关键列上的 DISTINCT。

感谢您的帮助。

下面是我的项目如何在 SSIS 中设置的图像,维度是 SCD 1。


我首先将其分为两个操作:生成代理键和填充维度表。第一步将是DISTINCT仅 3 列,第二步将变为JOIN。对这两个操作中使用的列建立索引可能会给您带来一些改进。

您可以结合DISTINCT with NOT EXISTS为了避免处理已经映射的行,如下所示:

insert into dbo.KeyMappingTable (shipto, salpha, ssalpha)
select distinct shipto, salpha, ssalpha
from dbo.Source
where not exists (
    select *
    from dbo.KeyMappingTable
    where shipto = dbo.Source.shipto and salpha = dbo.Source.salpha and ssalpha = dbo.Source.ssalpha
 )

然后你就有了映射,所以你可以这样做:

insert into dbo.DimShipTo (shipto_id, shipto /*, etc. */)
select
    m.shipto_id,
    s.shipto -- etc.
from
    dbo.KeyMappingTable m
    join dbo.Source s
    on m.shipto = s.shipto and m.salpha = s.salpha and m.ssalpha = s.ssalpha
where
    not exists (
        select *
        from dbo.DimShipTo
        where shipto_id = m.shipto_id
    )

你还应该看看MERGE http://technet.microsoft.com/en-us/library/bb510625.aspx,如果您使用类型 1 维度并且只想在地址或其他属性发生更改时更新它们(通常这是一个有用的命令),这会很方便。但它仅在 SQL Server 2008 中可用;您没有提及您正在使用的 SQL Server 版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL 数据仓库,需要帮助使用 T SQL SELECT 或更好的替代方案填充我的 DIMENSION? 的相关文章

  • 插入后,数据库中仅插入“字符串”的一个字符

    Below is my table screenshot Data after insertion C 代码 SqlConnection con new SqlConnection connectionsession Con con Ope
  • date_sub 对于 mysql 可以,对于 postgresql 可以

    此查询适用于 mySQL 不适用于 Postgresql select from where id and h gt date sub now INTERVAL 30 MINUTE 错误是 Query failed ERREUR erreu
  • 在单个 select 语句中多次有条件地求和同一列?

    我有一个表 显示每个月在给定位置的各种类型的部署的员工部署情况 ID Location ID Date NumEmployees DeploymentType ID 例如 一些记录可能是 1 L1 12 2010 7 1 Permanent
  • 将 .MDF SQL Server 数据库与 ASP.NET 结合使用与使用 SQL Server

    我目前正在 ASP NET MVC 中编写一个网站 我的数据库 其中还没有任何数据 只有正确的表 使用 SQL Server 2008 我已将其安装在我的开发计算机上 我使用服务器资源管理器从应用程序连接到数据库 然后使用 LINQ to
  • 如何在 DB2 AS/400 中将小数字段转换为日期字段?

    我有一个 DECIMAL 字段 其中包含 AS400 格式的日期 1100614 我努力了 cast MYDATE as DATE 但我无法将 DECIMAL 转换为 DATE 而 DATE MYDATE 返回空值 如何将此字段转换为日期字
  • 只获取倒数第二条记录 - mysql-query

    我有一个如下表记录 my table id rating description 1 0 0 bed 2 1 0 good 3 0 0 bed 4 1 0 good 5 0 0 bed 6 0 0 bed 7 0 0 bed 现在我通过评级
  • PostgreSQL 中“-”处或附近的语法错误

    我正在尝试运行查询来更新用户密码 alter user dell sys with password Pass 133 但因为 它给了我这样的错误 ERROR syntax error at or near LINE 1 alter use
  • 可以使用表通配符创建 sql 查询吗?

    这可能是一个简单的问题 但我无法在网上找到解决方案 任何帮助将不胜感激 我正在尝试在 PHP 中创建一个 SQL 查询 并希望以某种方式将通配符应用于 TABLE 过滤器 可能是这样的 select from table 但是 到目前为止我
  • Postgresql 一张表的多个计数

    我想从表中的两列中获得这些列中值的统一计数 例如 两列是 表 报告 type place one home two school three work four cafe five friends six mall one work one
  • 根据日期顺序排名

    我的数据如下 Heading Date A 2009 02 01 B 2009 02 03 c 2009 02 05 d 2009 02 06 e 2009 02 08 我需要如下排名 Heading Date Rank A 2009 02
  • 意外的查询结果

    为什么我从 sql server 得到以下结果 SELECT 12 C1 CONVERT int C2 CASE WHEN THEN equal ELSE not equal END C3 Sql Server Fiddle 演示 http
  • 如何通过子 POJO 的属性过滤复合 ManyToMany POJO?

    我有两个像这样的房间实体 Entity public class Teacher implements Serializable PrimaryKey autoGenerate true public int id ColumnInfo n
  • 实现软删除的最佳方法是什么?

    目前在做一个项目 我们要对大部分用户 用户角色 实现软删除 我们决定添加一个is deleted 0 数据库中每个表的字段并将其设置为 1 如果特定用户角色点击特定记录上的删除按钮 现在为了将来的维护 每个SELECT查询需要确保它们不包含
  • 如何通过 SQL 表关联 SQL 中的实体

    我是数据库设计的初学者 我需要为项目创建数据库 我可以用面向对象的术语解释我想要做什么 值得庆幸的是 数据库专家会很友善地向我解释如何在数据库方面处理这个问题 我想创建一个与位置实体 州 城市 有关系的用户 ID 名称 实体 所以在编程语言
  • 获取带有计数的不同记录

    我有一张桌子personid and msg列 personid msg 1 msg1 2 msg2 2 msg3 3 msg4 1 msg2 我想得到总计msg对于每个personid 我正在尝试这个查询 select distinct
  • 删除数据库中的行后如何重新排序ID

    我正在使用 C 来制作具有 sql 数据库的程序 在数据库中我有一个名为Workers 它有一个自动增量和主键ID column 当我删除一条记录时 ID 之间会出现间隙 删除记录后如何重新排序 ID UPDATE 我要做的就是找到记录后将
  • SQL 连接两个没有关系的表

    我有具有相同结构的不同表 我想通过其中一列将它们连接起来 问题是他们不共享该专栏中的信息 Table 1 Type A Name Value Table 2 Type B Name Value 结果表 在单列中 nameFromA name
  • SQL 约束以防止根据列的先前值更新列

    是否可以使用检查约束 或其他一些技术 来防止在更新记录时设置与其先前值相矛盾的值 一个例子是 NULL 时间戳 表明发生了某些事情 例如 file exported 一旦文件被导出并且具有非 NULL 值 就不应再将其设置为 NULL 另一
  • 使用加权行概率从 PostgreSQL 表中选择随机行

    输入示例 SELECT FROM test id percent 1 50 2 35 3 15 3 rows 你会如何编写这样的查询 平均 50 的时间我可以获得 id 1 的行 35 的时间 id 2 的行 15 的时间 id 3 的行
  • 如何通过SQL查询检查是否有JSON函数?

    有SQL 2016 中的 JSON 函数 https learn microsoft com en us sql t sql functions json functions transact sql例如 JSON VALUE JSON Q

随机推荐

  • 如何从 pandas DataFrame 输出带有合并单元格的 html 表格

    我有一个 pandas DataFrame df 作为 gt gt gt df pd DataFrame 1 2 2 2 3 1 2 3 3 3 1 3 2 3 5 7 9 9 3 2 columns list ABCDE I want t
  • 使用 R-markdown knitr hooks 自定义 HTML 报告中的表格格式

    我正在尝试建立一个knitr knit hooks 自动格式化 R markdown 块的数据帧输出kableExtra在我的 HTML 报告中 我不想重复将以下行 或任何行 添加到每个列表数据块的末尾 head iris gt kable
  • App Store 中的应用内购买被拒绝

    我的免费应用程序刚刚从应用程序商店被拒绝 我上传了 3 个应用程序 HD iPad PayedIphone 和 freeiphone 在免费版本中 我有一个完整版本的链接 显然我需要免费版本的 inAppPurchase 而不是链接到完整版
  • 未找到未捕获的模块 jqueryify

    我的情况 我正在查看 spin js 以获取我正在考虑编写的 Web 应用程序 我已阅读所有文档并浏览了所有示例 现在 我尝试在我自己的 Windows 7 笔记本电脑上运行 spin contacts 示例项目 我正在运行适用于 Wind
  • 实体框架 GroupBy 采用 mySQL 最古老的

    我有一个巨大的项目列表 需要按一个属性对它们进行分组 然后应该选择每组中最古老的 简化示例 选择每个用户中最旧的用户FirstName using ED NWEntities ctx new ED NWEntities IQueryable
  • 如何使用 numpy 构建排序数组? (什么是等级数组?)

    我希望你们所有人都度过愉快的一天 在我的 Python 课上 我们正在学习如何使用 Numpy 因此我们收到了有关该内容的作业 我的问题是 什么是排名数组以及如何使用 python 构建它 我的老师试图用这些台词解释这一点 但我实际上什么也
  • 如何在 YAWS/Erlang 中发送消息以接收

    通常在 Erlang 程序员中使用 在并发编程中发送消息以接收符号 但是我们如何在雅司病中做到这一点 说我正在尝试这样做 gt
  • 如何在 Rust 中解码和编码浮点数?

    我想在 Rust 中解码 存储和编码浮点数 我知道关于num Float integer decode https docs rs num 0 1 36 num trait Float html tymethod integer decod
  • Android 中 Google 地图上的图像平铺

    我正在开发一个 Android 应用程序 我在 Android 中的 Google 地图上放置了图像图块 我可以用简单的 javascript 来做 但谁能告诉我如何在 android 中做到这一点 这是我的 JavaScript 代码 f
  • 将打印重定向到日志文件

    好的 我已经完成了我的第一个Python程序 它有大约1000行代码 在开发过程中我放置了大量print使用运行命令之前的语句os system 说类似的话 print running command cmd os system cmd 现
  • 如何在多行 Vim 缩写中 Eatchar

    我想在 Vim 中触发多行缩写 无需输入 触发 字符 并且光标在特定位置以插入模式结束 我已经快到了 但只是没能成功 到目前为止 我已将以下内容添加到我的 vimrc 中 eat characters after abbreviation
  • 链接到使用 GCC5 编译的库时,clang 中未定义的引用

    我尝试使用 libmuparser 的 ubuntu 15 10 存储库版本 包 libmuparser2v5 使用 gcc 编译工作正常 但使用 clang 则不行 我对此进行了更深入的研究 提出了以下最小 非 工作示例和一些问题 考虑一
  • Android Volley 缓存不同的 POST 请求

    我正在使用 Android Volley 来缓存请求 当我使用 GET 时效果很好 但由于某些原因我转而使用 POST 现在我想用不同的 POST 数据缓存相同的 URL 请求 1 gt URL1 POST 数据 Cat 1 请求 2 gt
  • 使用 GUID 作为主键的最佳实践是什么,特别是在性能方面? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有一个应用程序 几乎在所有表中都使用 GUID 作为主键 并且我读到 使用 GUID 作为主键时存在性能问题 老实说 我没有看到任何问题 但我
  • Chrome DevTools 中帧渲染的空闲时间

    在研究网页渲染优化时 我在许多流行网站上遇到了奇怪的渲染行为 帧渲染时间的很大一部分是没有任何操作的空白空间 Apple 促销页面的示例 https i stack imgur com L00lb png 在该时间范围内唯一运行的就是 GP
  • 用 Angular 2 应用程序替换现有的 MVC 项目

    听起来有点奇怪 但我会解释一下我想做什么 我目前有一个用 C 编写的 MVC 网站 该网站使用 Razor 视图 在同一个项目中 我添加了一个 API 可以像这样访问 www mysite com api controller get 只需
  • Xcode 8 MainStoryboard 显示蓝色矩形而不是对象

    我有最新版本的 Xcode 8 官方版本 我看到蓝色矩形边框填充为白色 而不是主故事板上的普通对象 标签 图像等 我拖动图像 按钮或任何东西 它只显示一个蓝色矩形 我没有看到矩形内的对象 只是一个空的蓝色边框矩形 我附上一张图片供大家查看
  • 从父 iOS 访问容器视图控制器

    在 iOS6 中 我注意到新的容器视图 但不太确定如何从包含视图访问它的控制器 设想 我想从容纳容器视图的视图控制器访问警报视图控制器中的标签 他们之间有一个segue 我可以使用它吗 是的 您可以使用 segue 来访问子视图控制器 及其
  • sql 对另一列中特定日期之前的调用次数进行计数/求和

    我有显示客户来电的数据 我有客户号码 电话号码 1 个客户可以有多个 每个语音呼叫的日期记录以及呼叫持续时间的列 表看起来位于示例下方 CusID PhoneNum Date Duration 20111 43576233 20 01 20
  • SQL 数据仓库,需要帮助使用 T SQL SELECT 或更好的替代方案填充我的 DIMENSION?

    我的 SQL Server 中有一个表 我在其中 暂存 来自 ERP 系统的数据仓库提取内容 从这个暂存表 表名 DBO DWUSD LIVE 我构建维度并加载事实数据 示例 DIMENSION 表称为 SHIPTO 该维度具有以下列 sh