标签: normalization

PostgreSQL:有效地将数据加载到Star Schema中

想象一下PostgreSQL 9.0上具有以下结构的表:

create table raw_fact_table (text varchar(1000));
Run Code Online (Sandbox Code Playgroud)

为了简化起见,我只提到一个文本列,实际上它有十几个.该表有100亿行,每列有很多重复.该表是使用COPY FROM从平面文件(csv)创建的.

为了提高性能,我想转换为以下星型模式结构:

create table dimension_table (id int, text varchar(1000));
Run Code Online (Sandbox Code Playgroud)

然后将事实表替换为如下事实表:

create table fact_table (dimension_table_id int);
Run Code Online (Sandbox Code Playgroud)

我当前的方法是基本上运行以下查询来创建维度表:

Create table dimension_table (id int, text varchar(1000), primary key(id));
Run Code Online (Sandbox Code Playgroud)

然后创建填充我使用的维度表:

insert into dimension_table (select null, text from raw_fact_table group by text);
Run Code Online (Sandbox Code Playgroud)

之后我需要运行以下查询:

select id into fact_table from dimension inner join raw_fact_table on (dimension.text = raw_fact_table.text);
Run Code Online (Sandbox Code Playgroud)

想象一下,通过多次将所有字符串与所有其他字符串进行比较,我获得了可怕的性能.

在MySQL上,我可以在COPY FROM期间运行存储过程.这可以创建字符串的哈希值,并且所有后续字符串比较都是在哈希而不是长原始字符串上完成的.这似乎不可能在PostgreSQL上,我该怎么办?

样本数据将是包含类似内容的CSV文件(我也使用整数和双精度的引号):

"lots and lots of text";"3";"1";"2.4";"lots of text";"blabla"
"sometext";"30";"10";"1.0";"lots of text";"blabla"
"somemoretext";"30";"10";"1.0";"lots of text";"fooooooo"
Run Code Online (Sandbox Code Playgroud)

postgresql etl normalization star-schema fact-table

7
推荐指数
2
解决办法
5740
查看次数

关于地址,城市,国家数据的规范化问题

我目前有3个表格,用于存储世界上所有主要城市的信息,每个地区/州对应这些国家/地区,以及每个城市/地区.

城市,州和国家

现在我在我的数据库中有大约6个其他表,例如需要完全相同的5列的用户或组织表:地址,郊区,城市,州/地区,国家.所以我想知道是否"良好"的规范化实践可能使用存储这5条信息的"位置"表,然后用户或组织表将有一个location_id来引用回来.

有位置表的城市,州和国家

好主意还是坏主意?我也在考虑使用"联系人"表,其原理相同,包括home_phone,business_phone,mobile_phone,email_address,而不是在6个表中的每个表中都有相同的5列.

任何建议表示赞赏 非常感谢!

mysql database database-design normalization denormalization

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

什么是xml规范化?

可能重复:
Java Node normalize方法有什么作用?

什么是xml规范化.我在javadoc中找到了以下但我无法理解它?有人可以帮忙吗?

public void normalize()
Run Code Online (Sandbox Code Playgroud)

将所有Text节点放在此Node下面的子树的完整深度(包括属性节点)中,形成"普通"形式,其中只有结构(例如,元素,注释,处理指令,CDATA部分和实体引用)分隔Text节点,即既没有相邻的Text节点也没有空的Text节点.这可以用于确保文档的DOM视图与保存和重新加载的视图相同,并且在依赖于特定文档树结构的操作(例如XPointer [XPointer]查找)是使用.如果附加到Node.ownerDocument的DOMConfiguration对象的参数"normalize-characters"为true,则此方法还将完全规范化Text节点的字符.注意:如果文档包含CDATASections,单独的规范化操作可能是不够的,因为XPointers不区分Text节点和CDATASection节点.自:DOM Level 3

java xml terminology normalization

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

有趣的树/分层数据结构问题

大学有不同的组织部门的方式.有些学校去了School -> Term -> Department.其他人介于两者之间,最长的是School -> Sub_Campus -> Program -> Term -> Division -> Department.

School,Term和,并且Department是学校的"树"部门中唯一存在的.这些类别的顺序永远不会改变,我给你的第二个例子是最长的.每一步都是1:N的关系.

现在,我不确定如何建立表之间的关系.例如,列中包含哪些列Term?其母公司可能是Program,Sub_CampusSchool.它取决于学校的系统.我可以设想将Term表设置为所有这些(所有这些都默认为NULL)的外键,但我不确定这是在这里做事的规范方式.

sql database tree normalization hierarchy

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

在Python 2.7中使用unicodedata.normalize

再一次,我对unicode问题非常困惑.我无法弄清楚如何成功使用unicodedata.normalize按预期转换非ASCII字符.例如,我想转换字符串

u"Cœur"
Run Code Online (Sandbox Code Playgroud)

u"Coeur"
Run Code Online (Sandbox Code Playgroud)

我很确定unicodedata.normalize是这样做的方法,但我不能让它工作.它只是保持字符串不变.

>>> s = u"Cœur"
>>> unicodedata.normalize('NFKD', s) == s
True
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python unicode normalization unicode-normalization python-2.7

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

将表规范化为第3范式

这个问题显然是一个功课问题.我无法理解我的教授,也不知道他在大选期间所说的话.我需要逐步指示将下表归一化为1NF,然后是2NF,然后是3NF.

在此输入图像描述

我感谢任何帮助和指导.

database database-design normalization relational-database database-schema

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

Julia:将DataFrame传递给函数会创建一个指向DataFrame的指针吗?

我有一个函数,我在其中规范化DataFrame的前N列.我想返回规范化的DataFrame,但保留原文.然而,似乎该函数也改变了传递的DataFrame!

using DataFrames

function normalize(input_df::DataFrame, cols::Array{Int})
    norm_df = input_df
    for i in cols
        norm_df[i] = (input_df[i] - minimum(input_df[i])) / 
            (maximum(input_df[i]) - minimum(input_df[i]))
    end
    norm_df
end

using RDatasets
iris = dataset("datasets", "iris")
println("original df:\n", head(iris))

norm_df = normalize(iris, [1:4]);
println("should be the same:\n", head(iris))
Run Code Online (Sandbox Code Playgroud)

输出:

original df:
6x5 DataFrame
| Row | SepalLength | SepalWidth | PetalLength | PetalWidth | Species  |
|-----|-------------|------------|-------------|------------|----------|
| 1   | 5.1         | 3.5        | 1.4         | 0.2        | "setosa" |
| 2   | 4.9         | …
Run Code Online (Sandbox Code Playgroud)

normalization dataframe julia

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

如何将拉丁语unicode字符替换为[az]字符

我正在尝试将所有拉丁语unicode字符转换为它们的[a-z]表示形式

ó --> o
í --> i
Run Code Online (Sandbox Code Playgroud)

我可以轻松地逐一进行,例如:

myString = myString.replaceAll("ó","o");
Run Code Online (Sandbox Code Playgroud)

但由于存在大量的变化,这种方法是不切实际的

有没有其他方式在Java中这样做?例如a regular Expression或autility library

使用案例:

1-城市名称从其他语言到英语,例如

EspíritoSanto - > Espirito Santo,

java regex string unicode normalization

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

模仿Agda中的类型的Haskell规范(仅限一个实例)

Agda的记录和instance关键字的混合使我们的行为类似于Haskell的类型类.而且,忽略instance关键字,我们可以为同一类型设置多个实例 - 这是我们在Haskell中无法做到的.

我正处于需要Haskell的单实例要求的地步,但在Agda中.是否有编译器选项或一些技巧/启发式来强制执行此操作?

现在我采取的方法是,

record Yo (n : ?) : Set where
  field
    sem : (some interesting property involving n)

open Yo {{...}}

postulate UniqueYo: ? {n} (p q : Yo n) ? p ? q
Run Code Online (Sandbox Code Playgroud)

然而,每当我实际使用UniqueYo缺乏计算时,我的目标就会充斥着...| UniqueYo p p我喜欢的地方...| refl或完全重写为正常形式的东西.

任何帮助表示赞赏!

haskell normalization typeclass agda

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

tensorflow上的批量标准化 - tf.contrib.layers.batch_norm在培训方面表现良好,但测试/验证结果不佳

我尝试在Mnist数据集上使用函数tf.contrib.layers.batch_norm实现CNN.

当我训练和检查模型时,我发现损失正在减少(好!)但是测试数据集的准确性保持随机(~10%)(BAD !!!)

如果我在没有批量标准化的情况下使用相同的模型,我会发现测试精度正在按预期增加.

你可以在下面的代码中看到我如何使用批量规范化功能.如果我用于测试数据集来设置is_training = True我得到了很好的结果,所以问题是批量标准化函数的is_training = False模式.

请帮我解决一下这个.提前感谢所有人.

    # BLOCK2 - Layer 1
    conv1 = tf.nn.conv2d(output, block2_layer1_1_weights, [1, 1, 1, 1], padding='SAME')
    conv2 = tf.nn.conv2d(output, block2_layer1_2_weights, [1, 1, 1, 1], padding='SAME')
    conv3 = tf.nn.conv2d(output, block2_layer1_3_weights, [1, 1, 1, 1], padding='SAME')
    conv4 = tf.nn.conv2d(output, block2_layer1_4_weights, [1, 1, 1, 1], padding='SAME')

    conv_normed1 = tf.contrib.layers.batch_norm(conv1, scale=True, decay=batch_norm_decay, center=True,  is_training=is_training, updates_collections=None )
    conv_normed2 = tf.contrib.layers.batch_norm(conv2, scale=True, decay=batch_norm_decay, center=True,  is_training=is_training, updates_collections=None )
    conv_normed3 = tf.contrib.layers.batch_norm(conv3, scale=True, decay=batch_norm_decay, center=True,  is_training=is_training, …
Run Code Online (Sandbox Code Playgroud)

normalization tensorflow

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