我必须决定使用 Azure SQL 数据仓库还是基于 VM 上虚拟化的 Microsoft SQL Server 的 SQL 数据仓库。
我不明白的问题是最大并发查询限制为 32。Azure SQL 数据库的限制是 6400。
老实说,当我想在企业环境中使用 Azure 数据仓库时,32 个并发查询是可笑的,或者我不明白。
假设一家公司在全球拥有 10,000 名员工,我建立了一个用于报告目的的 Azure 数据仓库,假设有 250 名永久员工正在查询,或者另外 250 名员工正在使用使用数据仓库中数据的业务应用程序。在没有极端性能缺乏的情况下,这应该如何工作?
我即将毕业于电气工程专业.
我想学习一个数据仓库工具.您是否建议我学习如何帮助我提升自己的职业生涯,请记住我没有计算机科学学位?
下面粘贴的是一个示例SQL代码,它使用where子句中的case语句,但它抛出一个语法错误,说"在mrktng_pckge_typ_cd和NOT关键字之间期待关键字如END".
CASE WHEN exc_ind=1 THEN
mrktng_pckge_typ_cd NOT IN ('a','b','c','d') ELSE NULL END
我每天在DimPerson维度表中跟踪员工更改,并在每个月末填写我的事实表并计算员工,退出和员工人数.对于这个例子,假设我将填写4月30日月底的事实表.现在这就是我面临的问题:我在4月17日有一个员工记录,这是一个"雇佣"行动,所以在那个时候,我的DimPerson表读起来像这样:
+-------+-----------+----------+--------+--------------------+-------+
| EmpNo | Firstname | LastName | Action | EffectiveStartDate | isCur |
+-------+-----------+----------+--------+--------------------+-------+
| 4590 | John | Smith | Hire | 4/17/2017 | Y |
+-------+-----------+----------+--------+--------------------+-------+
Run Code Online (Sandbox Code Playgroud)
现在2天后,我看到同一个员工,但是有一个动作"经理改变",所以现在我的DimPerson表变为:
+-------+-----------+----------+-----------------+--------------------+-------+
| EmpNo | Firstname | LastName | Action | EffectiveStartDate | isCur |
+-------+-----------+----------+-----------------+--------------------+-------+
| 4590 | John | Smith | Hire | 4/17/2017 | N |
| 4590 | John | Smith | Manager Change | 4/19/2017 | Y |
+-------+-----------+----------+-----------------+--------------------+-------+
Run Code Online (Sandbox Code Playgroud)
因此,在月末,当我选择所有"当前"员工时,我会错过这个人的雇佣捕获,因为他最近的记录只是经理变更而实际招聘发生在"月内".在进行定期快照时,您是否可以错过某些更改?在这种情况下,你建议我做什么来捕捉雇佣行动?
获取与 ~100k 值中的任何一个匹配的数据的最佳方法是什么?
对于这个问题,我正在使用 Amazon Redshift 数据库并有一个类似这样的表,其中包含数亿行:
--------------------
| userID | c1 | c2 |
| 101000 | 12 | 'a'|
| 101002 | 25 | 'b'|
____________________
Run Code Online (Sandbox Code Playgroud)
还有数百万个唯一的用户 ID。我有一个包含 98,000 个我关心的用户 ID 的 CSV 列表,我想对这些特定用户的列进行数学计算。
select c1, c2 from table where userID in (10101, 10102, ...)
Run Code Online (Sandbox Code Playgroud)
与这样的巨型列表匹配的最佳解决方案是什么?
我的方法是制作一个 python 脚本,读取我们条件集中所有用户的结果,然后在 python 中根据 CSV 进行过滤。它非常缓慢,但并非在所有情况下都有效。
一位同事建议将 98k 用户上传到临时表中,然后加入查询。这似乎是最聪明的方法,但我想问你们是否都有想法。
我还想知道打印一个包含所有 98k 用户的超长 SQL 查询是否可以匹配并运行它。出于好奇,那甚至会跑吗?
今天早些时候,我问了这个问题并得到了我正在寻找的答案.现在我有一个后续问题:
我想要的是:
我希望MERGE比较每个列的值,每行,在针对源表中的相应值的目标表,并基于通过分离的逻辑的任何更新OR的WHEN MATCHED AND块.
我怕我写的代码(如下图所示)将在列出的更新THEN UPDATE SET块,如果任何由分离的逻辑OR在WHEN MATCHED AND块是真实的.
如果我的预感是正确的,您对如何重新编写代码以使其表现得像我希望它的行为有任何建议吗?

为什么有人会同时保留这两个系统?
DW最大的问题是昂贵的启动成本.在将数据和业务领域分解为事实和维度之前,需要充分了解您的数据和业务领域.如果你的假设是错误的,那么在整个过程中的任何时候,你都会被束缚在一起,或者经历另一个艰难的维护周期.我已经看到由于这种高昂的开销成本,DW过程永远不会到任何地方.更不用说,如果你的DW人离开,那么培训替补是非常困难的,因为领域的知识与他有关.是的,它就像经典的瀑布流程,僵硬而脆弱,通常无法应对不断变化的需求/商业环境.
另一方面,NoSql是敏捷的.您可以根据需要以临时方式动态创建索引.在存储数据之前,几乎不需要了解您的数据.随着您的理解的提高,NoSql解决方案可以很好地扩展.
考虑到NoSql如何轻松承担DW的角色,而不是相反,为什么还要烦扰DW呢?当你已经拥有NoSql解决方案时,你如何证明DW系统的昂贵存在?2有共存的地方吗?
sql ×3
architecture ×1
database ×1
fact-table ×1
merge ×1
mysql ×1
nosql ×1
postgresql ×1
sql-server ×1
t-sql ×1
teradata ×1