小编Amm*_*arR的帖子

在维度中动态定义范围

每次我决定构建一个立方体时,我都会遇到一个问题,但我还没有找到克服它的方法。

问题是如何允许用户自动定义一系列事物,而无需在维度中对它们进行硬编码。我将在一个例子中解释我的问题。

我有一个叫做客户的表:

表结构

这是表中的数据:

数据表

我想以枢轴样式显示数据,并将工资年龄分组在定义的范围内,如下所示:

具有定义范围的数据表

我写了这个脚本并定义了范围:

SELECT [CustId]
      ,[CustName]
      ,[Age]
      ,[Salary]
      ,[SalaryRange] = case
        when cast(salary as float) <= 500 then
            '0 - 500'
        when cast(salary as float) between 501 and 1000 then
            '501 - 1000'
        when cast(salary as float) between 1001 and 2000 then
            '1001 - 2000'
        when cast(salary as float) > 2000 then
            '2001+'
        end,
        [AgeRange] = case
        when cast(age as float) < 15 then
            'below 15'
        when cast(age as float) between …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server ssas pivot

18
推荐指数
3
解决办法
1万
查看次数

添加一个新列并定义其在表格中的位置

我有 5 列的表 A:

TableA
--
Name
Tel
Email
Address
Run Code Online (Sandbox Code Playgroud)

我想在电话和电子邮件之间添加一个新列(移动):

TableA
--
Name
Tel
Mobile
Email
Address
Run Code Online (Sandbox Code Playgroud)

如果我使用

ALTER TABLE TableA
ADD COLUMN Mobile INT NOT NULL
Run Code Online (Sandbox Code Playgroud)

移动列被添加到表的末尾。

有没有办法在不删除表并将数据移动到新表的情况下实现这一目标?

sql-server-2008 database-design t-sql alter-table

7
推荐指数
1
解决办法
5万
查看次数

将事务表记录传输到数据仓库的最佳 ETL 设计

我每天有 2 种类型的表来填充数据仓库,查找表或配置表只有 100 条记录,这很容易,我只需截断和重新填充表。

但是对于有很多记录的事务表,我通常会递增,即我每天运行 ETL 以添加昨天的记录。

我有两个我总是面临的问题

  1. 当工作因任何原因失败时(我失去了 Days 交易)
  2. 当由于任何原因作业运行两次或我运行两次时(我得到重复)

现在我正在尝试设计一种方法来解决这两个问题,并尝试以这样一种方式开发 ETL,以便在发生任何这些事件时它可以自动修复它。

我希望它检查是否缺少天数并运行该天的 ETL,并检查是否有重复项并删除它们。

以下是我认为的方法 1. 我在过去 5 天里不管,ETL 运行的每一天,删除过去 5 天并重新填充。2.我检查目标表是否在上个月缺少日期,然后我用缺少的天数查询源。

请记住,源是生产环境中的一个巨大表,我必须在从它请求时最大限度地优化我的查询。

谢谢

data-warehouse sql-server etl ssis design-pattern

5
推荐指数
1
解决办法
8225
查看次数

在数据库的所有表中插入虚拟数据的脚本

我想要一个脚本,它可以遍历数据库中的所有表及其列,并根据列类型和大小插入虚拟数据,以便我可以开始使用数据库进行测试,以及运行查询和测试应用程序的能力。

sql-server datatypes t-sql

4
推荐指数
1
解决办法
2万
查看次数

提高事实表的性能

我有一个事实表 CardTransactionFact

表结构

TABLE [dbo].[CardTransactionFact]
    [CardTransactionID] [int] IDENTITY(1,1) NOT NULL,
    [TransactionTerminalID] [int] NOT NULL,
    [SourceAccountTypeID] [int] NULL,
    [DestinationAccountTypeID] [int] NULL,
    [RimNo] [varchar](15) NULL,
    [CaptureCodeID] [int] NOT NULL,
    [RoutingCodeID] [int] NOT NULL,
    [ProcessingCodeID] [int] NOT NULL,
    [ActionCodeID] [int] NOT NULL,
    [NetworkCodeID] [int] NOT NULL,
    [ProductCodeID] [int] NOT NULL,
    [AcquiringCountryCodeID] [int] NOT NULL,
    [IssuingCountryCodeID] [int] NOT NULL,
    [TransactionCurrencyCodeID] [int] NOT NULL,
    [AmountBD] [decimal](18, 3) NOT NULL,
    [LocalCurrencyCodeID] [int] NOT NULL,
    [CardIssuerBank] [int] NOT NULL,
    [CardTypeID] [int] NOT NULL,
    [SuspectTransactionFlag] [char](1) NOT NULL, …
Run Code Online (Sandbox Code Playgroud)

performance index sql-server-2008 facttable query-performance

2
推荐指数
1
解决办法
2261
查看次数