IsNull - 脚本和图表函数
IsNull 函数用于检验表达式的值是否为 NULL,如果是,则返回 -1 (True),否则返回 0 (False)。
语法:
IsNull(expr )
返回数据类型: 布尔值
参数 | 描述 |
---|---|
expr | 表达式或字段包含要度量的数据。 |
示例 | 结果 |
---|---|
IsNull(Productname) |
如果 ProductName 为空值,则返回 -1 (True),否则返回 0 (False)。 |
示例 - IsNull 基本原理
概览
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
-
加载到名为 Example 的数据表中的数据集。
-
数据表中有以下字段:
-
ID
-
Value
-
加载脚本
Example:
LOAD * Inline
[ID, Value
0,
1,NULL
2,-
3,378];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
-
ID
-
Value
创建以下计算维度:
-
=If(len(trim(Value))= 0 or Value='NULL' or Value='-', Null(), Value ),如果 Value 字段没有值、短横 (-) 字符或值 NULL ,则返回 NULL ,否则返回值。
-
=If(IsNull(If(len(trim(Value))= 0 or Value='NULL' or Value='-', Null(), Value )), 'T', 'F'),根据 Value 字段是否包含空值,返回值 T (True) 或 F (False)。
ID | Value | If(len(trim(Value))= 0 or Value='NULL' or Value='-', Null(), Value ) | If(IsNull(If(len(trim(Value))= 0 or Value='NULL' or Value='-', Null(), Value )), 'T', 'F') |
---|---|---|---|
0 | - | T | |
1 | NULL | - | T |
2 | - | - | T |
3 | 378 | 378 | F |
Value 列显示数据集中输入的数据。第一个度量(第 3 列)对前 3 行返回 NULL,其值满足语 IF 句的条件:len(trim(Value))= 0 or Value='NULL' or Value='-'。最后一行返回输入的值,378。
第二个度量(第 4 列)取第 3 列中表达式的值,并返回 T if NULL 或 F if notNULL。结果显示,前 3 行为空值。
在此例中,已加载包含四行的内联表,其中前面三行不包含任何内容,或者包含短横 - 或者 Value 列中的文本 NULL。我们使用 Null 函数将这些值转换为带有中间前置 LOAD 的真正的 NULL 值呈现形式。
第一个前置 LOAD 用于添加一个字段,通过使用 IsNull 函数来检查值是否为 NULL。
NullsDetectedAndConverted:
LOAD *,
If(IsNull(ValueNullConv), 'T', 'F') as IsItNull;
LOAD *,
If(len(trim(Value))= 0 or Value='NULL' or Value='-', Null(), Value ) as ValueNullConv;
LOAD * Inline
[ID, Value
0,
1,NULL
2,-
3, 378];
下面是结果表。在 ValueNullConv 列中,NULL 值用 - 表示。
ID | Value | ValueNullConv |
IsItNull |
---|---|---|---|
0 | - | T | |
1 | NULL | - | T |
2 | - | - | T |
3 | 378 | 378 | F |
示例 – IsNull 场景
概览
对销售数据集进行分析,以查看哪些字段具有空值。
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
-
加载到名为 Example 的数据表中的数据集。
-
设置为 NULL 的 NULLINTERPRET 变量。
-
数据表中有以下字段:
-
SalesID
-
Name
-
Age
-
Email
-
Region
-
Status
-
加载脚本
Set NULLINTERPRET = NULL;
Example:
LOAD * Inline [
SalesID, Name, Age, Email, Region, Status
1, John Smith, 30, john@email.com, North, Active
2, Jane Doe, NULL, jane@email.com, South, Active
3, Bob Johnson, 45, NULL, East, Inactive
4, Alice Brown, 28, alice@email.com, West, Active
5, Charlie Lee, NULL, charlie@email.com, NULL, Active
6, Eva Green, 35, eva@email.com, North, NULL
7, David White, 50, NULL, South, Inactive
8, Fiona Black, 42, fiona@email.com, East, Active
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
-
SalesID
-
Name
创建以下计算维度:
-
=If(IsNull(Age), 'Age unavailable', Age),用值 Age unavailable 填充 Age 字段,前提是该值为 NULL。
-
=If(IsNull(Email), 'Email unavailable', Email),用值 Email unavailable 填充 Email 字段,前提是该值为 NULL。
-
=If(IsNull(Region), 'Region unavailable', Region),用值 Region unavailable 填充 Region 字段,前提是该值为 NULL。
SalesID | Name | If(IsNull(Age), 'Age unavailable', Age | If(IsNull(Email), 'Email unavailable', Email) | If(IsNull(Region), 'Region unavailable', Region) |
---|---|---|---|---|
1 | John Smith | 30 | john@email.com | North |
2 | Jane Doe | Age unavailable | jane@email.com | South |
3 | Bob Johnson | 45 | Email unavailable | East |
4 | Alice Brown | 28 | alice@email.com | West |
5 | Charlie Lee | Age unavailable | charlie@email.com | Region unavailable |
6 | Eva Green | 35 | eva@email.com | North |
7 | David White | 50 | Email unavailable | South |
8 | Fiona Black | 42 | fiona@email.com | East |
IsNull 函数检查空值并在发现空值时返回 true,其结果表明数据集中的几个字段包含空值。例如,在 Age 列中识别出 Charlie Lee 的空值,并返回输出 Age unavailable。