我们有以下表格(从单独表格的数据摘录中填充),包含3个字段:
表的内容(/原始数据源内容)受到严格控制,因此,当Null值可以存在于Ax或Ay中时,它们将永远不会出现在两者中。
记录1,2和3与以下商定的规则相同: "当存在Null值时,字段条目的值应取自相邻的非空Ax / Ay" 有了这个,记录1,2和3被解释为具有1的Ax和Ay值。
目前,在执行数据分析时,所有sql构造必须考虑Null的可能存在,最终结果是sql复杂性/要检查的条件数量增加,这也导致引入人类的风险增加错误。这些风险在实际表中被放大,该表包含更多类似的字段对,其中可以应用类似的规则。 由于所有分析仅查看提取数据表而不是原始/源数据......
- >在这种情况下,通过UPDATE预先准备/修改提取表,以便用相应的相邻字段填充所有这些遇到的Null值,这是可接受的做法吗? ...目的是实现更简单的写/读,也许更有效/更快地执行sql。
答案 0 :(得分:2)
没有理由更新表格,这是我建议你不要走的路径。
该表用于存储数据,而不是处理数据
您正在寻找的是View
,用于显示要查看的表格,包括您对数据的约定规则。
例如,对于以下代码(SQL-Server):
CREATE TABLE MyTable(
[Id] [int] IDENTITY(1,1) NOT NULL,
[Ax] [int] NULL,
[Ay] [int] NULL
)
CREATE VIEW MyView
AS
SELECT ID,
CASE
WHEN Ax IS NULL THEN Ay
Else Ax END
as Ax,
CASE
WHEN Ay IS NULL THEN Ax
Else Ay
END as Ay
FROM MyTable
INSERT INTO MyTable
VALUES (1,1)
INSERT INTO MyTable
VALUES(1,NULL)
INSERT INTO MyTable
VALUES(NULL,1)
INSERT INTO MyTable
VALUES(1,2)
SELECT * FROM MyTable
SELECT * FROM MyView
我明白了: