计算字段

Insights in ArcGIS Online
Insights in ArcGIS Enterprise
Insights 桌面版

您可以使用数据表数据工程为您的数据集添加和计算新字段。 您可利用已计算字段通过从数据集中选择字段并应用运算符函数来创建值,例如增长率、损失率以及随时间的变化。

还可以使用查找答案中的计算百分比变化计算比例计算 Z 得分以计算字段。

提示:

可以使用数据表将归一化数据添加到地图、图表和表的数据集。 在计算数据并将其添加到您的数据集后,需要更改字段类型以采用比率/比例字段 比率/比例字段 形式表示该数据。 有关数据归一化的详细信息,请参阅分区统计图

计算数据表中的字段

数据表中的已计算字段仅会出现在工作簿中,而不会添加到原始数据集中。 如果要保留工作簿之外的已计算字段,则可以通过共享数据集或使用数据工程来创建新的要素图层。

注:

数据表格可以提供数据的典型视图,显示限制为 2,000 行。 以升序或降序对表格进行排序可以查看顶部 2,000 行以及底部 2,000 行。 所有计算均会在完整数据集上执行。

请完成以下步骤以计算数据表中的字段:

  1. 如有必要,可打开工作簿并添加数据。
  2. 在数据窗格中,单击要添加计算字段的数据集旁的数据集选项按钮 数据集选项
  3. 单击查看数据表
  4. 单击 + 字段

    名为新字段的列即会附加到表格中。

    注:

    可以重新调整列的尺寸并对其进行重新排序,但是不会保存这些更改。

  5. 单击新列的标题并提供一个更具描述性的名称。
  6. 单击 fx输入计算函数,以显示包含函数、字段名称和运算符的菜单,从而构建自己的公式。

    等效的键盘命令也可用于替换 fx 菜单中的任何按钮。

  7. 按要求使用函数、字段和运算符完成计算。
  8. 单击运行

    如果运行按钮未启用,则计算语法中存在错误。

新的已计算字段将显示在数据集的末尾处。 通过选择已计算字段并单击删除已计算字段按钮 删除已计算字段 可将其移除。

使用数据工程来计算列

Insights 桌面版
注:

Insights desktop 中提供了数据工程。 所有 Insights in ArcGIS OnlineInsights in ArcGIS Enterprise 用户都可以访问 Insights desktop。 有关详细信息,请参阅 ArcGIS Insights 概述

数据工程现在可以预览。

可将计算列工具添加到数据模型,并将其用于将列添加到输出数据集。 数据工作簿中的已计算列将永久添加到输出数据集中,而非仅存在于工作簿中。

请完成以下步骤以使用数据工程来计算列:

  1. 如有必要,可在 Insights desktop打开数据工作簿添加数据
  2. 在侧面工具栏上,单击计算列按钮 计算列
  3. 对于新建列名参数,请键入新列的名称。
    注:

    Insights 中支持的数据库仅支持列名的字母、数字和下划线。 列名中不受支持的字符在保存到数据库时会转换为下划线(例如,population/sq mile 将转换为 population_sq_mile)。 为获得最佳结果,请应用仅使用受支持字符的列名称,然后在必要时使用其他字符更新列别名。

  4. 列表达式框中,根据需要使用函数、列名称和运算符来完成计算。

    等效的键盘命令也可用于替换任何按钮。

    注:

    如果数据工作簿具有多个数据集,则输入选项基于活动表。

  5. 单击运行

    如果运行按钮未启用,则计算语法中存在错误。

新的已计算列将被添加到表中,且计算列工具将被添加到数据模型中。

运算符

计算字段可能需要数学和逻辑运算符。 以下运算符可用于计算字段:

运算符使用

+

加。

-

减。

×

乘。 等效的键盘命令是 *。

÷

除。 等效的键盘命令是 /。

xy

幂函数。 等效的键盘命令是 ^。

<

小于。

>

大于。

=

等于。

<=

小于或等于。

>=

大于或等于。

<>

不等于。

,

逗号,用作函数中语法组件之间的分隔符。

(

左括号。

)

右括号。

AND

逻辑运算符,必须满足所有条件。

OR

逻辑运算符,必须满足其中一个条件。

IS NULL

一个二进制运算符,用于测试字段中的值是否为空。 当测试值不为空时,输出值为 0;当测试值为空时,输出值为 1。

IS NOT NULL

一个二进制运算符,用于测试字段中的值是否不为空。 当测试值为空时,输出值为 0;当测试值不为空时,输出值为 1。

注:

数学运算符(例如 +、-、> 和 =)与数字和比率/比例字段兼容。 函数(例如 CONCATENATE()DATEDIF())可以分别用于代替字符串字段和日期/时间字段的某些数学运算符。

IS NULLIS NOT NULL 运算符与除位置之外的所有字段类型(字符串、数字、比率/比例和日期/时间)兼容。 一些具有空值的字符串字段可以配置为空字符串。 在这些情况下,IS NULLIS NOT NULL 将不会返回预期的结果。 相反,应使用 field=""field<>"" 表达式分别代替 field IS NULLfield IS NOT NULL

ANDOR 运算符可用于连接具有与其对应逻辑函数不同的语法的条件。 以下示例显示了使用函数和运算符的等效计算:

注:

在计算字段时,必须在 IF() 函数内使用 ANDOR

函数运算符

IF(AND(MeanAge>=18, MeanAge<=33),"Millennial","Other")

IF(MeanAge>=18 AND MeanAge<=33,"Millennial","Other")

IF(OR(Crime="Theft", Crime="Theft from vehicle", Crime="Shoplifting"), "Larceny", "Other")

IF(Crime="Theft" OR Crime="Theft from vehicle" OR Crime="Shoplifting", "Larceny", "Other")

函数

可以使用数据表中的 fx 按钮或输入计算函数字段来访问函数。 函数分为四种类型:字符串数值日期逻辑

在计算中添加函数时,弹出窗口将显示函数语法。 您可以使用关闭按钮 关闭 移除弹出窗口,或通过单击输入计算函数字段中的函数来重新显示弹出窗口。

字符串函数

大多数字符串函数使用字符串输入生成字符串输出。 但是以下两个函数例外:VALUE() 函数和 FIND() 函数,这两个函数均使用字符串输入生成数值输出。

字符串函数中的输入文本可以为文字(用引号括起的文本)或类别字段值。 下表使用类别字段作为示例,并且使用可在这些字段中找到的示例值。 字段值中使用引号演示了字段具有分类数据。

语法描述示例

CONCATENATE(text1, [text2], ... )

连接两个或多个字符串值。

加利福尼亚州学校的数据集包含街道地址字段、城市字段和邮政编码字段。 可以使用 CONCATENATE() 函数创建邮寄地址的单个字段:

  • 函数语法:CONCATENATE(Address,", ", City," , CA, ",ZIP)
  • 示例字段值:
    • Address = "380 New York St"
    • City = "Redlands"
    • ZIP = "92373"
  • 结果文本:"380 New York St, Redlands, CA, 92373"

FIND(find_text, within_text, [start_num])

提供字符串或文本字段内指定文本(一个或多个字符)的位置。 与诸如 MID()LEFT()RIGHT() 等其他函数结合使用时,FIND() 函数可能最有用。

数据集包含带街道地址的字段(包括数值和街道名称)。 要按街道对数据进行分类,可使用 MID() 函数从剩余地址中移除街道名称。 但是,每个数值的长度不同,因此无法对各行执行 start_num。 可使用 FIND() 函数找到 start_num

  • 函数语法:FIND(" ", Address)
  • 示例字段值:
    • Address = "380 New York St"
  • 结果数值:4

LEFT(text, [num_chars])

返回文本字段的一部分。

  • num_chars:指定将返回表达式的字符数,且应为整数。 将采用从左至右的顺序从首个位置对字符数进行计数。 如果未提供 num_chars,则默认为一个字符。

交通事故数据集包括具有事故日期的类别字段,其中包括星期、日期和年份。 要按星期来研究事故,可使用 LEFT() 函数计算新字段以显示字段的前三个字符(从星期开始):

  • 函数语法:LEFT(Accident_Date, 3)
  • 示例字段值:
    • Accident_Date = "Monday, November 14, 2016"
  • 返回文本:"Mon"

LOWER(text)

将返回所有数据均转换为小写形式的字符表达式。

公共事业部门正在编写需要更换的街道符号列表。 向列表添加新条目后,Status 字段的格式变得不标准,因此无法使用唯一值来显示这些符号。 可使用 LOWER() 函数对 Status 字段进行标准化,以便全部显示小写字母:

  • 函数语法:LOWER(Status)
  • 示例字段值:
    • Status = "Installed"
  • 返回文本:"installed"

MID(text, start_num, [num_chars])

返回文本字段的一部分。

  • start_num:指定第一个字符的位置(从 1 开始)。 start_num 必须是整数。
  • num_chars:指定将返回表达式的字符数,且应为整数。 如果 num_chars 值大于字符串的长度,则不会返回空字符。 如果未提供 num_chars,则默认值为起始字符后的所有字符。

加利福尼亚州学校的数据集包含街道地址字段、城市字段和邮政编码字段。 可以使用 MID() 函数从街道地址中分离街道名称:

  • 函数语法:MID(Address, 5, 20)
  • 示例字段值:
    • Address = "380 New York St"
  • 结果文本:"New York St"

RIGHT(text, [num_chars])

返回文本字段的一部分。

  • num_chars:指定将返回表达式的字符数,且应为整数。 将采用从右至左的顺序从最终位置对字符数进行计数。 如果未提供 num_chars,则默认为一个字符。

国家公园数据集包括具有公园名称和两位州代码的字段。 要按州对公园进行符号化,可使用 RIGHT() 函数来添加和计算新字段:

  • 函数语法:RIGHT(Park, 2)
  • 示例字段值:
    • Park = "Hawai'i Volcanoes National Park, HI"
  • 返回文本:"HI"

SUBSTITUTE(source_text, old_text, new_text)

用指定的新文本替换字符串中的旧文本。

  • source_text:原始文本或带有文本的字段。
  • old_textsource_text 内要替换掉的文本。
  • new_text:用于替换 old_text 的文本。

坑洼位置的数据集包含具有街道名称的字段。 当 Main Street 更名为 5th Street 时,需要更新数据集。 可使用 SUBSTITUTE() 函数更新 street_name 字段:

  • 函数语法:SUBSTITUTE(street_name, "Main", "5th")

注:

SUBSTITUTE() 函数将以 new_text 替换所有出现的 old_text。 例如,在函数 SUBSTITUTE("aba", "a", "c") 中,结果文本为“cbc”。

TRIM(text)

将返回移除末尾多余空格的字符串。

要素服务包含在值的开头和结尾处存在多余空格的文本字符串。 可使用 TRIM() 函数移除多余的空格:

  • 函数语法:TRIM(City)
  • 示例字段值:
    • City = " Redlands "
  • 返回文本:"Redlands"

UPPER(text)

将返回所有数据均转换为大写形式的字符表达式。

NGO 总部位置的数据集包含组织全名及其缩写(如果适用)的字段。 可使用 UPPER() 函数对缩写进行标准化,以便全部显示大写字母:

  • 函数语法:UPPER(Org)
  • 示例字段值:
    • Org = "Nasa"
  • 结果文本:"NASA"

VALUE(text, [format])

将文本转换为数值。

  • format:指定用作数值中小数分隔符的字符。 format 可以是十进制逗号 (",") 或小数点 (".")。 如果未提供 format,则默认分隔符将是小数点。

注:

如果未提供 format,则 VALUE() 函数中的嵌套函数可能会输出意外的结果。 因此,建议在使用 VALUE() 函数时指定 format

VALUE() 函数目前不支持将文本转换为负数。

零售店数据集具有含收入金额的类别字段。 可使用 VALUE() 函数将 Revenue 字段转换为数值。

  • 函数语法:VALUE(Revenue, ".")
  • 示例字段值:
    • Revenue = "1,000.00"
  • 结果数字:1000.00

数值函数

数值函数使用数值输入生成数值输出。 数值函数通常与其他函数结合使用,或者作为一种转换数据的方法。

输入数值可以为文字数值或数值字段。 为了更好地显示各个函数的用法,以下某些示例使用数值作为输入,而非字段。

语法描述示例

ABS(number)

返回绝对值。

  • 函数语法:ABS(-350)
  • 结果数值:350

AVG(number)

返回平均值。

  • 函数语法:AVG(field)
  • field 的示例数字值:4、5、11、6.5
  • 结果:6.63

CEILING(number)

将数字向上舍入为最近的 1 的倍数。

  • 函数语法:CEILING(7.8)
  • 结果数值:8

COS(number)

指定角的三角余弦值,以弧度为单位。

可使用以下公式将度转换为弧度:

radians = θπ/180,其中 θ = 角度,π ≈ 3.14

  • 函数语法:COS(0.35)
  • 结果数值:0.94

FLOOR(number)

将数字向下舍入为最近的 1 的倍数。

  • 函数语法:FLOOR(7.8)
  • 结果数值:7

LN(number)

指定浮点表达式的自然对数。 自然对数使用常量 e 作为底数值(近似于 2.72)

  • 函数语法:LN(16)
  • 结果数值:2.77

LOG(number)

以指定数为底的数值的对数。 默认底数为 10。

  • 函数语法:LOG(16, 2)
  • 结果数值:4

MAX(number)MAX(date)

返回最大值。

  • 函数语法:MAX(num_field)
  • num_field 的示例值:4、5、11、6.5
  • 结果:11

MIN(number)MIN(date)

返回最小值。

  • 函数语法:MIN(date_field)
  • date_field 的示例值:03/17/2018、02/14/2019、10/31/2020
  • 结果:03/17/2018

PERCENTTOTAL(number)

可以使用字段总计来计算每个字段值的百分比。

  • 函数语法:PERCENTTOTAL(num_field)
  • num_field 的示例值:4、5、11、6.5
  • 结果:0.1509、0.1887、0.4151、0.2453

POWER(number, power)

表达式的指定幂值。

  • 函数语法:POWER(2, 4)
  • 结果数值:16

ROUND(number, num_digits)

将数值四舍五入到指定位数。

  • num_digits = 输出中的小数位数
    • 如果 num_digits 为正,则数值将四舍五入到相应的小数位数
    • 如果 num_digits 为零,则数值将四舍五入到最接近的整数
    • 如果 num_digits 为负,则数值将四舍五入到小数点左侧指定的小数位

  • 函数语法:ROUND(54.854827, 2)
  • 结果数值:54.85
  • 函数语法:ROUND(54.854827, -1)
  • 结果数值:50

SIN(number)

指定角的三角正弦值,以弧度为单位。

可使用以下公式将度转换为弧度:

radians = θπ/180,其中 θ = 角度,π ≈ 3.14

  • 函数语法:SIN(0.79)
  • 结果数值:0.71

STDEV(number)

数值字段的标准差。

  • 函数语法:STDEV(field)
  • field 的示例数字值:4、5、11、6.5
  • 结果:3.09

SUM(number)

返回总值。

  • 函数语法:SUM(field)
  • field 的示例数字值:4、5、11、6.5
  • 结果:26.5

TAN(number)

返回输入表达式的正切值。

可使用以下公式将度转换为弧度:

radians = θπ/180,其中 θ = 角度,π ≈ 3.14

  • 函数语法:TAN(1.05)
  • 结果数值:1.74

日期函数

日期函数可以使用日期字段、文本或没有任何输入,具体取决于使用的函数。 DATEVALUE() 函数可用于替换 DATEDIF()TIMEDIF() 函数中的日期字段。

注:

DATEDIF()DATEADD() 中使用的日期/时间字段必须采用包含日期的格式(换言之,采用日期和时间格式或者仅日期格式)。 将不接受仅时间的日期/时间字段。

TIMEDIF() 中使用的日期/时间字段必须采用包含时间的格式(换言之,采用日期和时间格式或者仅时间格式)。 不接受仅日期的日期/时间字段。

支持使用以下日期分隔符:点 (.)、虚线 (-) 和斜线 (/)。

语法描述示例

DATE(year, month, day, [hour, minute, second], [AM/PM])

使用三个或更多单独的字段或值创建日期/时间字段。 接受以下规范:

  • year"YY"(两位数年份)或 "YYYY"(四位数年份)
  • month "MM" (1-12)
  • day"DD" (1-31)
  • hour"HH" (0-23) 或 "hh" (1-12)
  • minute"mm" (0-59)
  • second"ss" (0-59)
  • AM/PM"AM"/"PM"(不区分大小写)

注:

所有输入字段均可以是数值或字符串,AM/PM 参数除外。 数值必须为整数值。 两位数年份必须为字符串。

如果您将 DATE() 函数与数据库数据集配合使用,并指定了任何时间参数(hourminutesecond),则必须输入所有时间参数的输入值。

餐厅数据集所包含的字符串字段中带有最近卫生检查的日期和时间。 可以使用 DATE() 函数创建检查的日期字段:

  • 函数语法:DATE(2016, Month, Day, Hour, Min, 00)
  • 示例字段值:
    • Month = 8
    • Day = 15
    • Hour = 11
    • Minute = 30
  • 结果日期:8/15/2016, 11:30:00

注:

此示例中结果日期的格式将采用 24 小时制。 要使用 12 小时制,您必须指定 AM 或 PM。 相同的示例函数可以写成 DATE(2016, Month, Day, Hour, Min, 00, "AM")

TIME(hour, minute, second)

使用三个单独的字段或值创建日期/时间字段。 接受以下规范:

  • hour"HH" (0-23) 或 "hh" (1-12)
  • minute"mm" (0-59)
  • second"ss" (0-59)
  • AM/PM"AM"/"PM"(不区分大小写)

注:

所有输入字段均可以是数值或字符串,AM/PM 参数除外。 数值必须为整数值。

医院记录的数据集包含病人的到达时间。 可以使用 TIME() 函数为记录创建时间字段:

  • 函数语法:TIME(Hour, Min, 00)
  • 示例字段值:
    • Hour = 11
    • Minute = 30
  • 结果时间:11:30:00

注:

此示例中结果时间的格式将采用 24 小时制。 要使用 12 小时制,您必须指定 AM 或 PM。 相同的示例函数可以写成 TIME(Hour, Min, 00, "AM")

DATEADD(date, integer, [unit])

向输入字段中的日期添加指定的时间量。

  • date 必须为日期/时间字段。 该字段必须采用包含日期的格式(换言之,采用日期和时间格式或者仅日期格式)。 将不接受仅时间的日期/时间字段。
  • integer:要向输入日期添加的数值。 如果使用常量,则该数值必须为整数,可以为正数或负数。 如果使用数值字段,则将忽略小数位。 因此,最佳做法是使用仅包含整数的字段,或者使用整数计算新字段(例如,通过使用 ROUND() 函数)。
  • unit:要添加的时间的单位。 受支持的单位值包括:
    • "ss" = 秒
    • "mm" = 分钟
    • "h" = 小时
    • "D" = 日(默认)
    • "M" = 月
    • "Y" = 年

如果未提供任何单位,则将使用 "D"

向日期/时间字段添加月份时,输出将为相应月份的同一天,不考虑该月份中的天数。 如果该月份的相应日期在新月份中无效,则将使用该月份的最后一天。 例如,如果计算向输入字段添加三个月,并且原始日期之一为 2021 年 11 月 30 日,则输出值 2022 年 2 月 30 日无效。 由于 2022 年不是闰年,因此结果将记录为 2022 年 2 月 28 日。

公共卫生部门负责保存卫生区内患者的疫苗记录。 某种特定疫苗具有两针剂,这两针剂必须至少间隔 60 天,并且不超过 180 天。 DATEADD() 可用于创建字段,其中包含患者有资格接种第二剂的首个日期和最后一剂的截止日期。

有资格接种日期:

  • 函数语法:DATEADD(first_dose_date, 60, "D")
  • 示例字段值:
    • first_dose_date = 7/11/2021
  • 结果日期:9/9/2021

最终日期:

  • 函数语法:DATEADD(first_dose_date, 180, "D")
  • 示例字段值:
    • first_dose_date = 7/11/2021
  • 结果日期:1/7/2022

TIMEADD(time, integer, unit)

向输入字段中的时间添加指定的时间量。

  • time 必须为日期/时间字段。 可以向所有日期/时间字段添加时间,包括尚未包含时间组件的字段。
  • integer:要向输入时间添加的数值。 如果使用常量,则该数值必须为整数,可以为正数或负数。 如果使用数值字段,则将忽略小数位。 因此,最佳做法是使用仅包含整数的字段,或者使用整数计算新字段(例如,通过使用 ROUND() 函数)。
  • unit:要添加的时间的单位。 受支持的单位值包括:
    • "ss" = 秒
    • "mm" = 分钟
    • "h" = 小时

将以协调世界时间 (UTC) 记录数据集的日期和时间,需要将其转换为中部标准时间 (CST)。 可以使用 TIMEADD() 函数创建带有 CST 时间的日期/时间字段:

  • 函数语法:TIMEADD(UTC_date, -6, "h")
  • 示例字段值:
    • UTC_date = 7/11/2021 2:30:00 PM
  • 结果日期:7/11/2021 8:30:00 AM

DATEDIF(start_date, end_date, [unit])

计算两个日期之间经过的时间。 start_date 必须早于 end_date,否则输出将为负值。

  • start_dateend_date 可以为日期/时间字段或 DATEVALUE() 函数。 如果使用日期/时间字段,则字段必须采用包含日期的格式(换言之,采用日期和时间格式或者仅日期格式)。 将不接受仅时间的日期/时间字段。
  • unit:要返回的时间单位。 受支持的单位值包括:
    • "ss" = 秒
    • "mm" = 分钟
    • "h" = 小时
    • "D" = 日(默认)
    • "M" = 月
    • "Y" = 年

如果未提供任何单位,则将使用 "D"

针对每个单位的结果执行四舍五入,如下所示:

  • 秒 - 对于秒,将不执行四舍五入。
  • 分钟 - 如果日期之间相隔整整 60 秒,则计为一分钟。 不足一分钟的结果将向下舍入。
  • 小时 - 如果日期之间相隔整整 60 分钟,则计为一小时。 不足一小时的结果将向下舍入。
  • 日 - 如果日期之间相隔整整 24 小时,则计为一日。 不足一日的结果将向下舍入。
  • 月 - 无论指定月份中有多少天,如果日期之间相隔整整一个月(例如 1 月 1 日至 2 月 1 日),则计为一月。 不足一月的结果将向下舍入。 计算中将不考虑诸如小时等时间组件。
  • 年 - 如果日期之间相隔 183 天(半年),则计为一年。 不足 183 天的结果将向下舍入。

餐厅数据集包含其最近卫生检查的日期。 可以使用 DATEDIF() 函数计算两次卫生检查之间经过的天数:

示例 1:

  • 函数语法:DATEDIF(Inspection1, Inspection2, "D")
  • 示例字段值:
    • Inspection1 = 8/15/2016, 11:30:00 AM
    • Inspection2 = 10/31/2016 2:30:00 PM
  • 结果时间(天):77

示例 2:

  • 函数语法:DATEDIF(Inspection1, Inspection2, "D")
  • 示例字段值:
    • Inspection1 = 8/15/2016, 11:30:00 AM
    • Inspection2 = 8/16/2016 8:00:00 AM
  • 结果时间(天):0

示例 3:

  • 函数语法:DATEDIF(Inspection1, Inspection2, "M")
  • 示例字段值:
    • Inspection1 = 8/15/2016, 11:30:00 AM
    • Inspection2 = 10/31/2016 2:30:00 PM
  • 结果时间(月):2

TIMEDIF(start_time, end_time, [unit])

计算两个日期/时间值之间经过的时间。 start_time 必须早于 end_time,否则输出将为负值。

  • start_timeend_time 可以为日期/时间字段或 DATEVALUE() 函数。 如果使用时间(例如,hh:mm:ss),则 start_timeend_time 必须采用仅时间格式。
  • unit:要返回的时间单位。 受支持的单位值包括:
    • "ss" = 秒(默认)
    • "mm" = 分钟
    • "h" = 小时

如果未提供任何单位,则将使用 "ss"

针对每个单位的结果执行四舍五入,如下所示:

  • 秒 - 对于秒,将不执行四舍五入。
  • 分钟 - 如果日期之间相隔整整 60 秒,则计为一分钟。 不足一分钟的结果将向下舍入。
  • 小时 - 如果日期之间相隔整整 60 分钟,则计为一小时。 不足一小时的结果将向下舍入。

医院收集记录的数据集中包括外科手术的开始和结束时间。 可以使用 TIMEDIF() 函数计算每个病人手术所消耗的时间:

  • 函数语法:TIMEDIF(TimeIn, TimeOut, "mm")
  • 示例字段值:
    • TimeIn = 11:30:00 AM
    • TimeOut = 2:30:20 PM
  • 结果时间(分钟):180

DATEVALUE(date_text, [format])

将文本转换为日期。

  • date_text 可以是字符串字段或用引号括起的文本。
  • format(可选)- 输入的日期格式。 format 作为用引号括起的文本输入。 可以使用以下单位规范输入 format
    • "MM" - 月 (1-12)
    • "DD" - 日 (1-31)
    • "YY" - 两位数年份
    • "YYYY" - 四位数年份
    • "HH" - 小时 (0-23)
    • "hh" - 小时 (1-12)
    • "mm" - 分钟 (0-59)
    • "ss" - 秒 (0-59)
    • "AM"/"PM" - 不区分大小写

注:

如果未提供 format,则 DATEVALUE() 函数中的嵌套函数可能会输出意外的结果。 因此,建议在 DATEVALUE() 内嵌套函数时指定 format

如果未提供 format,则未使用分隔符指定的日期(例如 "10312016")将视为毫秒。 因此,如果输入日期时未使用分隔符,建议指定一种格式。

如果指定日期时使用了分隔符,但是没有 format,则将猜测一种格式。 如果无法猜测格式,则将应用默认 "MM-DD-YY"

DATEVALUE() 函数只能读取用引号括起的文本或字符串字段。 日期/时间字段无法用作 DATEVALUE() 函数的输入。

餐厅数据集包含其最近卫生检查的日期。 可使用 DATEVALUE() 函数指定自上次检查后经过的天数,从而指定当前日期:

  • 函数语法:DATEDIF(Inspection_date, DATEVALUE("10/31/2016", "MM/DD/YYYY"), "D")
  • 示例字段值:
    • Inspection_date = 8/15/2016, 11:30:00 AM
  • 结果数值:77

可以通过多种方法对日期和时间进行格式化。 以下示例是一些将文本转换为日期格式的方法:

  • DATEVALUE("12/25/2016 12:30:25 pm", "MM/DD/YYYY hh:mm:ss pm")
  • DATEVALUE("12/25/2016 14:23:45", "MM/DD/YYYY HH:mm:ss")
  • DATEVALUE("25-08-2008 08:40:13 AM", "DD/MM/YYYY hh:mm:ss AM")

NOW()

以日期/时间格式返回当前日期和时间。 将根据协调世界时间 (UTC) 记录时间。

餐厅数据集包含其最近卫生检查的日期。 可使用 NOW() 函数指定自上次检查后经过的天数,从而指定当前日期:

  • 函数语法:DATEDIF(Inspection_date, NOW(), "D")
  • 示例字段值:
    • Inspection_date= 8/15/2016, 11:30:00 AM
  • 结果数值:77

逻辑函数

逻辑函数使用字符串或数值输入生成字符串或数值输出。 输入内容可以为文字(用引号括起的文本或常数)或字段值。 下表使用字段和文本值的组合作为示例,并且使用可在给定字段中找到的示例值。

语法描述示例

AND(condition,condition, ...)

测试两个或多个条件,如果满足所有条件,则返回 TRUEAND() 应该在 IF() 函数的 condition 参数内使用。

  • condition:至少包含一个条件运算符的任何表达式。 条件可以包括数值、字符串和字段值。 可使用以下条件运算符:
    • >:大于
    • <:小于
    • >=:大于或等于
    • <=:小于或等于
    • =:等于
    • <>:不等于

数据集包含生活在每个区块组中的人的平均年龄。 市场研究人员希望了解哪些区块组主要包含千禧一代。 平均年龄在千禧一代年龄范围内的区块组可以通过 IF()AND() 函数组合进行查找:

  • 函数语法:IF(AND(MeanAge>=18, MeanAge<=33),"Millennial","Other")
  • 示例字段值:
    • MeanAge = 43
  • 结果文本:"Other"

IF(condition, TRUE_expression, [FALSE_expression])

测试某一条件,并根据结果返回 TRUEFALSE 值。

  • condition:至少包含一个条件运算符的任何表达式。 条件可以包括数值、字符串和字段值。 可使用以下条件运算符:
    • >:大于
    • <:小于
    • >=:大于或等于
    • <=:小于或等于
    • =:等于
    • <>:不等于
  • TRUE_expression:条件为 true 的情况下将使用的表达式。 此参数为必选项。
  • FALSE_expression:条件为 false 的情况下将使用的表达式。 如果未提供 FALSE_expression,则默认值将为 null

TRUE_expressionFALSE_expression 可以是任何有效的表达式,其中包括嵌套 IF() 函数。 TRUE_expressionFALSE_expression 的数据类型应该相同(例如,两者都是字符串或两者都是数值)。

数据集包含涵盖商店收入和费用的字段,可用于查找商店的状态(是否已发布净利润或净亏损)。 可使用 IF() 函数查找各个商店的状态:

  • 函数语法:IF(Revenue>Expenses, "Profit","Loss")
  • 示例字段值:
    • Revenue = 400,000
    • Expenses = 350,000
  • 结果文本:"Profit"

ISNULL(field)*

测试字段中的值是否为空。 当测试值不为空时,输出值为 0;当测试值为空时,输出值为 1。

  • field:支持字符串、数值、比率/比例和日期/时间字段类型。

ISNULL() 可单独使用或用于 IF() 函数的 condition 参数。

数据集包含涉及骑行者的交通事故的位置,以及发生事故的街道上的自行车道类型。 对于在没有自行车道的街道上发生的事故,RouteType 字段留空。 数据集可更新为使用 IF()ISNULL() 函数组合填入空值。

  • 函数语法:IF(ISNULL(RouteType), "None", RouteType)

ISNOTNULL(field)*

测试字段中的值是否非空。 当测试值为空时,输出值为 0;当测试值不为空时,输出值为 1。

  • field:支持字符串、数值、比率/比例和日期/时间字段类型。

ISNOTNULL() 可单独使用或用于 IF() 函数的 condition 参数。

数据集包含涉及骑行者的交通事故的位置,以及发生事故的街道上的自行车道类型。 对于在没有自行车道的街道上发生的事故,RouteType 字段留空。 数据集可更新为使用 IF()ISNOTNULL() 函数组合填入空值。

  • 函数语法:IF(ISNOTNULL(RouteType), RouteType, "None")

OR(condition,condition, ...)

测试两个或多个条件,如果至少满足一个条件,则返回 TRUEOR() 应该在 IF() 函数的 condition 参数内使用。

  • condition:至少包含一个条件运算符的任何表达式。 条件可以包括数值、字符串和字段值。 可使用以下条件运算符:
    • >:大于
    • <:小于
    • >=:大于或等于
    • <=:小于或等于
    • =:等于
    • <>:不等于

一个数据集可包含整个城市犯罪发生的位置。 犯罪分析师想要通过与其他类似罪行进行比较来分析盗窃罪的模式。 为了将盗窃罪与其他罪行进行比较,分析师必须首先确定每种罪行是否应视为盗窃罪。 犯罪类型可以使用 IF()OR() 函数的组合进行确定:

  • 函数语法:IF(OR(Crime="Theft", Crime="Theft from vehicle", Crime="Shoplifting"), "Larceny", "Other")
  • 结果文本:"Larceny"

*没有数据的某些字段可以配置为空,而非 null。 在这些情况下,ISNULL()ISNOTNULL() 将不会返回预期的结果。 相反,应使用 field=""field<>"" 表达式分别代替 ISNULL(field)ISNOTNULL(field)