添加公式

添加公式

公式,如名称所示,是您可以在 Zoho Analytics 中定义的计算,用于帮助您创建所需的报表。Zoho Analytics 提供了一个功能强大的公式引擎来创建所需的任何计算类型,以便创建所需的报表。公式是您创建的数学表达式,包含数字的任意组合、表格列的引用、运算符和函数等。函数是预定义的数学公式,旨在执行特定的已知计算。

Zoho Analytics 支持多种不同的公式。以下是 Zoho Analytics 支持的各种公式的汇总:

  • 公式列:这些是公式类型,您可以在其中向您的数据表添加新列,基于定义的计算/公式得出它的值。您可以定义任何功能强大的数学公式,将表列与运算符和内置函数结合使用。
  • 聚合公式:聚合公式是您应当在计算中使用聚合函数(SUM、AVG……)的公式。聚合公式的结果将不会作为另一列添加到基表中。它们只与创建它的表相关联,并且可以像创建任何其他表列一样用于创建报表(图表、透视表和摘要视图)。

 自定义公式

Zoho Analytics 允许您定义自己的强大公式,以满足您的特定报表要求。这让您可以轻松地执行从加法和减法等简单计算到内置函数的复杂组合。作为新列添加到表中的公式的输出称为公式列。您可以像使用表中其他列创建报表一样,使用这些公式列创建报表。

Zoho Analytics 为您提供各种内置函数,这些函数是预定义的数学公式,旨在轻松执行特定的公认计算。这些内置函数可以与表格列和基本算术运算符(如 +、-、/ 和 *)结合使用,以创建公式列。

要创建并使用公式列:

  • 从工作区的资源管理器页签中,选择您想要向其添加公式列的表。
  • 从工具栏中选择添加 > 公式列选项,或右键单击表中的的列并选择添加公式 > 公式列
  • 公式列对话框将打开,如下所示。此对话框可以轻松访问表中列的名称,以及许多可用于创建公式的内置函数。将鼠标悬停在某个函数上时,对话框底部将显示函数的简要描述,并随附语法和示例。

 

  • 添加公式列对话框中,从单击以插入列单击以插入函数框下的列表中选择您想要插入的列和函数。

例如,要构建一个公式列,将特定天数添加到给定日期:

  • 选择添加日期函数。您将看到 adddate() 语法出现在公式文本框中。
  • 公式文本框中,将光标置于括号之间,选择您想要向其添加日期的日期列。
  • 输入您想要添加的天数(例如 10),并以逗号分隔。

 

要创建具有此表达式的公式列,请在公式列名称文本框中键入列名称,然后单击确定。将在表中创建一个新的公式列,如下所示。

 

您可以通过右键单击表中列出的公式列,然后单击弹出菜单中的编辑公式列,随时编辑公式列。还请参阅查看/编辑公式以了解如何查看表中定义的所有公式以及编辑或删除表中定义的公式。

  公式列的快速添加选项

Zoho Analytics 提供了一种简单方便的方法来添加公式列,这些公式列基于一组有限的广泛使用的函数。您可以按照以下方式找到此快速添加选项。

  • 选择您想要基于其添加公式列的列。
  • 单击工具栏上的添加 > 添加公式列选项。
  • Zoho Analytics 会自动识别所选列的数据类型,并显示适用的广泛使用的预定义公式列表,如下面的屏幕截图所示。
  • 从列表中选择所需的公式后,Zoho Analytics 会在相应列上应用公式,并在表的右端添加新的公式列。

 

  Zoho Analytics 提供的内置函数

Zoho Analytics 为您提供各种内置函数,这些函数是预定义的数学公式,旨在轻松执行特定的公认计算。 

日期函数

函数描述示例
Absolute Month - absmonth(date_column)此函数将返回给定日期值的月份和年份,格式为(月份,yyyy)。absmonth('2011/8/7') = August, 2011
Absolute Quarter - absquarter(date_column)此函数将返回给定日期值的季度和年份,格式为(季度,yyyy)。absquarter('2011/8/7') = Q3, 2011
Add Date -
adddate(date_column, num_of_days)
此函数将指定的天数 (num_of_days) 添加到给定的日期值。adddate('2011/8/7',10) = 2011/8/17
Add Time - addtime(data_column, time)返回向给定日期列添加时间后的日期。addtime
('2002/02/21 18:23:26', '01:20:10') = 2002/02/21 19:43:36
Current Date - currentdate()此函数将返回计算机或服务器的当前日期。currentdate() = 15 Sep, 2011 10:06:18
Date and Time Dif - dateand
timediff(Unit, From Date, To Date[optional]
此函数将基于指定的单位返回两个日期列之间的日期和时间差。支持的单位有秒、分、小时、天、周、月、季度、年。dateandtimediff(DAY, '2015-01-01', '2015-05-01')=120
以上示例返回给定日期之间的天数差。
Date Diff - datediff(date_column1, date_column2)此函数将返回两个给定日期列之间的差。datediff('2011/8/11','2010/9/11') = 334
Day - day(date_column)此函数将返回给定日期值中的日。day( '2011/9/9') = 9
Day of Week - dayofweek(date_column)此函数将返回给定日期值的周中此日的数字(星期日= 1,星期一= 2,...)。dayofweek('2011/9/9') = 6
Day of Year - dayofyear(date_column)此函数将返回给定日期值在一年中的日数(0 到 365)。dayofyear('2011/9/2') = 245
From Unixtime - fromunixtime(seconds)此函数返回给定秒值的 Unix 时间。fromunixtime('1000') = 1970/01/01 05:46:40
Hour - hour(date_column)此函数返回给定日期值中的小时。hour('2011/8/7 10:35:23') = 10
Last Day - lastday(date_column)此函数将返回给定日期值所在月的最后一天。lastday('2011/9/7') = 2011/9/30
Make Date - makedate(year,num_of_days)此函数返回给定年份和积日值(0 到 365)的日期值makedate('2011','23') = 2011/1/23
Minute - minute(date_column)此函数返回给定日期值中的分钟。minute('2011/8/7 10:35:23') = 35
Modified Time -modifiedtime()  此函数返回记录的创建时间(如果是新添加记录)或记录的最后修改时间。应用此函数时,最初它将返回创建公式的时间。随后它将仅返回记录的修改时间。 
Month - month(date_column)此函数返回给定日期值所在月的名称。month('2011/9/7') = September
Month Num - monthnum(date_column)此函数返回给定日期值所在月的数字。monthnum('2011/9/7') = 9
Quarter - quarter(date_column)此函数返回给定日期值的季度。quarter('2011/8/7') = Q3
Second - second(date_column)此函数返回给定日期/时间值中的秒。second('2011/9/7 10:35:23') = 23
Sub Date - subdate(date_column,num_of_days)此函数返回从给定日期值中减去天数 (num_of_days) 后的值。subdate('2011/9/15','6') = 1990/9/9
Sub Time - subtime(date_column,time)此函数返回从具有时间值的给定日期中减去时间后的值。subtime('2011/02/21 18:23:26','01:20:10') = 2011/02/21 17:03:16
Week Day - weekday(date_column)此函数返回给定日期值的周中此日名称(星期日、星期一…)。weekday('2011/9/14') = Wednesday
Year - year(date_column)此函数返回给定日期值的年份。year('2011/9/7') = 2011

数值函数

函数描述示例
Abs - abs(numeric_column)此函数返回“numeric_column”的绝对值(没有符号的数字)pi() = 3.14159265358979
Acos - acos(numeric_column)此函数返回指定“numeric_column”的反余弦值。如果“numeric_column”不在范围 -1 到 1 之间,返回 NULL。pow(2,3) = 8
Asin - asin(numeric_column)此函数返回指定“numeric_column”的反正弦值。如果“numeric_column”不在范围 -1 到 1 之间,返回 NULL。rand() = 0.282164005825449
Atan - atan(numeric_column)此函数返回指定“numeric_column”的反正切值。atan(2) = 1.107149
Atan2 - atan2(numeric_column1, numeric_column2)此函数返回指定列“numeric_column1”/“numeric_column2”的反正切值atan2(0.8, 0.6) = 0.927295
Ceil - ceil(numeric_column)这个函数将“numeric_column”舍入到大于“numeric_column”且最接近的整数ceil(11.56) = 12
Cos - cos(numeric_column)此函数返回指定“numeric_column”的余弦值。cos(0) = 1
Cot - cot(numeric_column)此函数返回指定“numeric_column”的余切值。cot(0.25) = 3.916317
Degrees - degrees(numeric_column)此函数返回与给定弧度相等的角度degrees(1) = 57.2957795
Exp - exp(numeric_column)此函数返回指定“numeric_column”的指数值。exp(2) = 7.389056
Floor - floor(numeric_column)这个函数将“numeric_column”舍入到小于“numeric_column”且最接近的整数floor(11.56) = 11
Greatest - greatest(numeric_column,..., numeric_column)给出给定自变量的最大值。greatest(10,20,5) = 20
Least - least(numeric_column,..., numeric_column)给出给定自变量的最小值。log10(3) = 0.477121
Ln - ln(numeric_column)此函数返回指定“numeric_column”的自然对数ln(5) = 1.609438
Log10 - log10(numeric_column)此函数返回指定“numeric_column”的以 10 为底的对数log10(3) = 0.477121
Log2 - log2(numeric_column)此函数返回指定“numeric_column”的以 2 为底的对数log2(32) = 5
Mod - mod(numeric_column1, numeric_column2)返回“numeric_column1”除以“numeric_column2”的余数mod(10,3) = 1
Pi - pi()此函数返回 pi 的数值。pi() = 3.14159265358979
Power - pow(numeric_column1, numeric_column2)这个函数返回“numeric_column1”提升到“numeric_column2”次幂后的值pow(2,3) = 8
Random - rand()返回 0 至 1 之间的随机值。rand() = 0.9233482386203
Radians - radians(numeric_column)返回与给定角度相等的弧度角radians(180) = 3.1415926
Round - round(numeric_column)返回“numeric_column”四舍五入后的整数值。round(10.67) = 11
Sign - sign(numeric_column)如果“numeric_column”为负数、零或正数,则返回值为 1、0 或 1。sign(-23) =-1
Sin - sin(numeric_column)返回“numeric_column”的正弦值。sin(0) = 0
Square - square(numeric_column)返回指定“numeric_column”的平方。square(10) = 100
Square Root - sqrt(numeric_column)返回指定“numeric_column”的平方根。sqrt(16) = 4
Tan - tan(numeric_column)返回指定“numeric_column”的正切值。tan(0.5) = 0.546302

字符串函数

函数描述示例
Concat - concat(string_column,...,string_column)返回给定自变量的串联字符串。如果任何一个自变量为 null,则返回 null。concat('abcd','ef','db') = abcdefdbd
Concat_WS - concat_ws(separator,string_column1
,....,string_columnN)
返回给定自变量的串联字符串,并使用给定分隔符分隔。如果分隔符为 null,则返回 null。concat_ws('-','abcd','ef','db') = abcd-ef-db
Insert - insert(string_column, start_pos, len, new_string)对于字符串“string_column”,从位置“start_pos”开始“len”个字符长度由字符串“new_string”替换,返回替换后的值。“start_pos”必须大于 0。当 len 为 0 时,“new_string”插入位置“start_pos”之前。insert('abcddb', 3, 2, 'efgh') = abefghdb
Index of - indexof(string_column, sub_string)返回字符串“sub_string”在字符串“string_column”中第一次出现的索引。indexof('abcddb','db') = 5
Left - left(string_column, len)返回字符串“string_column”左边起“len”个字符数。left('abcdef',3) = abc
Length - length(string_column)返回字符串的字符长度。length('abcddb') = 6
Lowercase - lowercase(string_column)返回将“string_column”所有字符转换为小写后的字符串。lowercase('AbCD') = abcd
Locate - locate(sub_string, string_column, start_pos)c返回从“start_pos”位置开始字符串“string_column”中第一次出现字符串“sub_string”的索引。locate('db','zohodbdb',6) = 7
Lpad - lpad(string_column, len, pad_string)在字符串“string_column”的左边填充字符串“pad_string”,直到达到长度“len”个字符,返回填充后的值。如果字符串“string_column”的长度大于“len”,则返回“string_column”的前“len”个字符。lpad('DB',5,'a') = aaaDB
Ltrim - ltrim(string_column)返回删除前导空格后的字符串“string_column”。ltrim(' abcd') = abcd
Repeat - repeat(string_column,count)repeat('Abcd',3) = 'AbcdAbcdAbcd' 
Replace - replace(string_column, from_string, to_string)将字符串中出现的所有字符串“from_str”替换为字符串“to_str”,返回替换后的值replace('abcdac','ac','db') = abcddb
Reverse - reverse(string_column)返回“string_column”逆转后的值。reverse('abcd') = dcba
Right - right(string_column, len)返回字符串“string_column”右边起“len”个字符数。right('abcdef',4) = cdef
Rpad - rpad(string_column, len, pad_string)在字符串“string_column”的右边填充字符串“pad_string”,直到达到长度“len”个字符,返回填充后的值。如果字符串“string_column”的长度大于“len”,则返回“string_column”的前“len”个字符rpad('DB',5,'a') = DBaaa
Rtrim - rtrim(string_column)返回删除结尾空格后的字符串“string_column”。rtrim('abcd ') = abcd
Strcmp - strcmp(string_column1, string_column2)如果“string_column1”小于“string_column2”,则返回 -1;如果两个字符串相同,则返回 0;如果“string_column1”大于“string_column2”,则返回 1。strcmp('abcd', 'abcde') =-1
Substring - substring(string_column, start_pos, string_len)如果“string_column1”小于“string_column2”,则返回 -1;如果两个字符串相同,则返回 0;如果“string_column1”大于“string_column2”,则返回 1。substring('abcddb', 1, 4) = abcd
Trim - trim(string_column)返回删除字符串的前缀和后缀中所有空格后的字符串。trim(' abcd ') = abcd
Uppercase - uppercase(string_column)  返回将“string_column”所有字符转换为大写后的字符串。uppercase('abcD') = ABCD

逻辑函数

函数描述示例
IF - if(expr1,expr2,expr3)如果 expr1 为 true,则返回 expr2,否则返回 expr3if(5> 10,100,3) = 3
Ifnull - ifnull(expr1,expr2)如果 expr1 不是 null,则返回 expr1,否则返回 expr2ifnull(null,10) = 10
isnull( ) - isnull(expr1)如果 expr1 为 null,则返回 1,否则返回 0。isnull(null)- 1

通用函数

函数描述示例
Coalesce - coalesce(null,null,1,...)如果 expr1 为 null,则返回 1,否则返回 0。coalesce(null,null,4) = 4

  在公式列的基础上创建公式

公式列与表的其他列类似。如同处理表的其他列时一样,您可以在创建新公式列时使用现有公式列。重新使用现有公式列来创建新公式列可帮助您创建功能强大的公式组合,以及在工作区中轻松维护这些公式结构。请参阅上一部分以了解如何创建公式列。

  使用公式列创建报表

如同在表中使用列一样,您可以在创建报表时可以使用公式列。当您在已添加公式列的表的基础上创建新报表时,所有这些公式列都将列在左侧的“列列表”窗格中,可以通过拖放这些列来创建报表。如同处理其他列时一样,您可以在将公式列放置到报表的设计区域时,使用列上方显示的组合框,在公式列上应用函数。

以下屏幕截图显示了列列表页面中列出的“付款日期”公式列:

 

  共享公式列

创建公式列后,其操作方式与表中的任何其他列相同。当您共享表时,所有现有公式列也将共享给用户。

注:

  • 共享用户将无法编辑、删除或所共享的公式或设置其格式。此外,如非工作区管理员,共享用户将无法在共享表上添加自己的公式列。

  聚合公式

在报表中,我们所做的最常见的数据分析是对数据应用聚合函数(如 SUM、AVG、COUNT 等)并对其进行分析。在此类计算中,需要注意的重要方面是,在应用函数的上下文中计算聚合以提供准确的结果。Zoho Analytics 中的聚合公式旨在满足这一需求。

聚合公式是您在 Zoho Analytics 中定义的公式,在计算中使用至少一个聚合函数(SUM、AVG…)。此类计算的输出始终为数值(公制)。聚合公式主要用于创建功能强大的报表。这些公式可用于 Zoho Analytics 中的“图表”、“透视表”和“摘要视图”报表类型。

  • 聚合公式的结果始终是数值。
  • 聚合公式不会作为另一列添加到基表中,而是像公式列一样与基表相关联。但是,当您在表的基础上创建报表时,它将可用于创建报表(列示在列列表中)。
  • 聚合公式的值将针对使用该公式的表中显示的每个数据点进行计算(即,结果不仅仅是单个值)。这使它的功能十分强大。
  • 可以以与公式列相似的方式构建聚合公式。

Zoho Analytics 提供大量内置聚合函数,可用作聚合公式的一部分。您可以将这些内置的聚合函数构与基本的算术运算符(如 +、-、/ 和 *)相结合,以便构建公式。

  创建聚合公式

要创建聚合公式:

  • 从工具栏中选择添加 > 聚合公式选项,如下所示。

 

  • 添加聚合公式对话框将打开,如下所示。此对话框可以轻松访问表中列的名称,以及可用于创建公式的所有内置函数。将鼠标悬停在某个函数上时,对话框底部将显示函数的简要描述,并随附语法和示例。
  • 公式名称文本框中,键入您想要命名公式的名称。
  • 使用数据类型下拉菜单,选择公式的聚合结果的数据类型。数据类型仅可以是数字值,因此可能的类型有数字、正数、小数、货币和百分数。
  • 关联表字段提供了此公式关联的表的名称。这将自动设置为您要为其创建此聚合公式的表的名称。
  • 公式文本区域提供实际公式。您可以从单击以插入列单击以插入函数框下的列表中选择您想要插入至公式的列和函数。

    注:您还可以从通过查找列连接的关联表中插入列。下拉列表列出了与基表关联的所有父表。选择所需表,该表中的列将列示在下方。您可以通过单击将其插入公式。

  • 例如,要应用聚合公式以计算利润百分比, 则公式可以是 (SUM("SALE")- SUM("COST"))/SUM("COST")*100,如下面的屏幕截图所示。

 

  • 单击确定

聚合公式的结果将不会作为一列添加到基表中。它将会在创建报表时列示在列面板中。您可以通过单击工具栏中的添加 >编辑公式以对其进行访问(查看)或编辑。下一部分将讨论查看和编辑公式

  内置聚合函数

在创建聚合公式时,您可以使用 Zoho Analytics 支持的大量功能强大的内置函数。您可以选择适用的内置函数创建公式列,如果这些函数满足聚合公式所需的条件,您甚至可以将其用于创建聚合公式。还有一些特定的函数更相关且更适用于创建聚合公式。下表中描述了这些函数:

函数描述
Sum - sum(numeric_column)返回“numeric_column”的和。
Avg - avg(numeric_column)返回“numeric_column”的平均值。
Min - Min(numberic_column)返回“numeric column”的最小值
Max - max(numeric_column)返回“numeric_column”的最大值。
Count - count(column)返回给定列中的行数(值数)
Stddev - stddev(numeric_column)返回“numeric_column”的标准偏差
Variance - variance(numeric_column)返回“numeric_column”的方差
Distinct Count - count(distinct(column))返回给定列中不同值(行)的数量。
SumIf - sumif(condition, expr1, expr2)如果条件为 true,返回 expr1 作为和。否则返回 expr 2 作为和。expr1 和 expr2 可以是表达式,或仅仅是数字列。expr2 是可选自变量。示例:sumif(Region = 'East, Sales, 0) 将返回与 Region 列中的值 East 匹配的所有记录中 sales 列中值的总和。否则将返回 0 。
AvgIf - avgif(condition, expr1, expr2)如果条件为 true,返回 expr1 作为平均值。否则返回 expr 2 作为平均值。expr1 和 expr2 可以是表达式,或仅仅是数字列。expr2 是可选自变量。示例:avgif(Region = 'East, Sales, 0) 将返回与 Region 列中的值 East 匹配的所有记录中 sales 列中值的平均值。否则将返回 0 。
CountIf- countif(condition)返回满足条件的行数(记录数)。示例:countif(Region='East') 将返回表中与 Region 列中的值 East 匹配的行数(记录数)。
YTD -YTD(AggExpr,Date_Col)Year-to-date 是一个时间段,从当年的第一天开始,到当天结束。

自变量
AggExpr - 应为一个聚合表达式(使用 SUM、AVG 之类的聚合函数...),将针对该聚合表达式计算年初至今值
Date_Col - 应为一个日期列,将基于该日期列计算年初至今。

示例:YTD(Sum(sales), OrderDate) 根据日期列“OrderDat”返回当前年度到当天为止的销售总额

QTD - QTD(AggExpr,Date_Col)Quarter-to-date 是一个时间段,从本季度的第一天开始,到当天结束。

自变量
AggExpr - 应为一个聚合表达式(使用 SUM、AVG 之类的聚合函数...),将针对该聚合表达式计算本季度至今值
Date_Col - 应为一个日期列,将基于该日期列计算本季度至今。

示例:QTD(Sum(sales), OrderDate) 根据日期列“OrderDate”返回本季度到当天为止的销售总额。

MTD - MTD(AggExpr,Date_Col)Month-to-date 是一个时间段,从本月的第一天开始,到当天结束。

自变量
AggExpr - 应为一个聚合表达式(使用 SUM、AVG 之类的聚合函数...),将针对该聚合表达式计算本季度至本月至今值
Date_Col - 应为一个日期列,将基于该日期列计算本月至今。

示例:MTD(Sum(sales), OrderDate) 根据日期列“OrderDate”返回本月到当天为止的销售总额。

  在现有聚合公式的基础上创建聚合公式

Zoho Analytics 可让您使用现有聚合公式构建聚合公式。重新使用现有公式来创建新聚合公式可帮助您创建强大的公式组合,以及在工作区中轻松维护这些公式结构。

当您创建新的聚合公式时,现有公式将将和其他列一起列示在单击以插入列框中。所有的聚合公式都将使用棕色的 符号指示。如同处理表中的其他列时一样,您可以通过单击这些公式以将其插入到新公式定义中。

例如,假设您已经计算了利润百分比和总成本,且您想要计算获得的总利润。然后,您可以使用现有的聚合公式计算获得的总利润。公式可以是 ("Total Cost" * "Profit") / 100。

  使用聚合公式创建报表

如同处理表中的其他列时一样,您可以在创建所有报表(图表、透视表和摘要视图)时使用聚合公式。当您在已添加聚合公式的表的基础上创建新报表时,所有公式都将列在左侧的“列列表”窗格中,可以通过拖放这些公式来创建报表。

以下屏幕截图显示了我们所添加的列示在列列表页面的利润百分比聚合公式。所有聚合公式都将用包含符号的图标指示。

从工作区的资源管理器页签中,选择您想要向其添加聚合公式的表。

您可像使用表中任何其他数据列一样,在报表中使用聚合公式。聚合公式的值将针对使用该公式的表中显示的每个数据点进行计算(即,结果不仅仅是单个值)。在下面屏幕截图中显示的图表中,针对“年”绘制利润百分比 (%Profit)。如您所见,针对每年计算利润百分比的值,并绘制在图表中。

 

当您在报表中使用聚合公式时,您将无法在公式上应用其他函数(如同处理其他列时一样)。该函数将始终选为“Actual”,且无法修改。

  共享聚合公式

关于共享与协作,聚合公式的操作方式与表中任何一列的操作方式相似。当您共享表时,在表的基础上创建的所有聚合公式也将共享给您向其共享表的用户。因此,共享用户在数据表的基础上创建任何报表时,将能够使用这些公式。

注:

  • 共享用户将无法编辑、删除所共享的聚合公式或设置其格式,只能在创建报表时使用它。此外,如非工作区管理员,共享用户将无法在共享表上添加自己的聚合公式。

  查看/编辑公式

Zoho Analytics 允许您通过编辑公式选项查看、编辑、设置格式及删除表中定义的所有公式。您可以使用此选项查看和编辑公式列与聚合公式。要查看/编辑现有公式列或聚合公式:

  • 选择所需表。
  • 从工具栏中选择添加 > 编辑公式选项。
  • 编辑公式对话框将打开,并提供与表关联的所有公式的列表,如下所示:

 

  • 单击您想要编辑的公式旁边的编辑链接。
  • 编辑聚合公式/公式列(取决于列的类型)对话框将打开,您可以创建新公式的方式修改现有公式。
    • 编辑公式:您可以使用相应公式旁边提供的编辑链接编辑已构造的公式。
    • 删除公式:您可以使用相应公式旁边提供的删除链接,在任意时间从表中删除现有公式。
    • 设置公式格式:您可以使用所提供的格式链接,设置公式结果的格式,如对齐、小数位数、日期格式、货币符号等,具体取决于公式的数据类型。这与设置数据列的格式相似。请参阅此处以了解如何设置列格式。

还没有找到您需要的内容?

请发送邮件给我们:support@zohocorp.com.cn