阅读Interactive Analysis of Web-Scale Datasets论文,我碰到了重复和定义层次的概念。
虽然我理解这两者的必要性,为了能够消除事件的歧义,它会为每个值附加重复和定义级别。
我不清楚他们是如何计算水平的......
它说:
考虑图2中的现场代码。它在r1中出现三次。出现'en-us'和'en'在第一个名称中,而'en-gb'在第三个名称中。为了消除这些事件的歧义,我们将重复级别附加到每个值。它告诉我们在现场的重复现场重复的价值。
现场路径Name.Language.Code包含两个重复的字段,名称和语言。因此,Code的重复级别在0到2之间;级别0表示新记录的开始。现在假设我们正在扫描记录r1自上而下。当我们遇到'en-us'时,我们没有看到任何重复的字段,即重复级别为0.当我们看到'en'时,现场语言已经重复,所以重复级别为2.
我无法让我抓住它,Name.Language.Code
r1
中有en-us
和en
值。虽然是第一个r = 0
而第二个r = 2
是因为两个定义重复了吗? (语言和代码)?
如果是:
Name
Language
Code: en-us
Name
Language
Code: en
Name
Language
Code: en-gb
会不会?
0 2
1 2
2 2
定义级别。具有路径p的字段的每个值,尤其是每个NULL,都有一个定义级别,指定p中可能未定义的多少个字段(因为它们是可选的或重复的)实际存在于记录中。
为什么定义级别为2?
路径Name.Language
是否包含两个字段Code
和Country
,其中只有一个是optional\repeated
?
答案 0 :(得分:7)
Dremel条带化算法绝非易事。
要回答第一个问题:
using(SqlConnection connection = new SqlConnection("server=.\\server1; database = PMS; Integrated security=true;"))
{
String query = "INSERT INTO tblEmployees (cid, empID, empFirstName, empMidName,empLastName, empAge, empTitle, empAddress, empRank, empSalary, empEmail, empPhone,empMobile, Notes, userName, usrPassword, usrAccessLevel, empActive, empMarked, empType) VALUES (@cid, @empID, @empFirstName, @empMidName,@empLastName, @empAge, @empTitle, @empAddress, @empRank, @empSalary, @empEmail, @empPhone,@empMobile, @Notes, @userName, @usrPassword, @usrAccessLevel, @empActive, @empMarked, @empType)";
using(SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@cid", cid);
command.Parameters.AddWithValue("@empID", empID);
command.Parameters.AddWithValue(" @empFirstName", empFirstName);
command.Parameters.AddWithValue("@empMidName", empMidName);
command.Parameters.AddWithValue("@empLastName", empLastName);
command.Parameters.AddWithValue("@empAge", empAge);
command.Parameters.AddWithValue(" @empTitle", empTitle);
command.Parameters.AddWithValue("@empAddress", empAddress);
command.Parameters.AddWithValue("@empRank", empRank);
command.Parameters.AddWithValue("@empSalary", empSalary);
command.Parameters.AddWithValue(" @empEmail", empEmail);
command.Parameters.AddWithValue("@empPhone", empPhone);
command.Parameters.AddWithValue("@empMobile", empMobile);
command.Parameters.AddWithValue("@Notes", Notes);
command.Parameters.AddWithValue("@userName", userName);
command.Parameters.AddWithValue("@usrPassword", usrPassword);
command.Parameters.AddWithValue("@usrAccessLevel", usrAccessLevel);
command.Parameters.AddWithValue("@empActive", empActive);
command.Parameters.AddWithValue("@empMarked", empMarked);
command.Parameters.AddWithValue("@empType", empType);
connection.Open();
int result = command.ExecuteNonQuery();
// Check Error
if(result < 0)
Console.WriteLine("Error inserting data into Database!");
}
}
的重复级别为0,因为它是记录中en-us
路径的首次出现。
name.language.code
的重复级别为2,因为重复发生在级别2(语言标记)上。
要回答第二个问题,请记录以下信息
en
DocId: 20
Name
Language
Code: en-us
Name
Language
Code: en
Name
Language
Code: en-gb
的条目应为
name.language.code
说明:
en-us 0 2
en 1 2
en-gb 1 2
和name
,因此定义级别始终为2。 language
的重复级别为零,因为它是记录中的第一个en-us
。 name.language.code
和en
的重复级别为1,因为重复发生在en-gb
标签(级别1)上。