Insert/transform 到 0 或 1 基于文本的存在
Insert/transform to 0 or 1 based on presence of text
我想在 table 的位列中插入 0 或 1,0 表示没有文本,1 表示有文本。我正在通过 SSIS 中的 excel 源提取数据。在下面的例子中,它应该是:
Client 1: 1 1 1
Client 2: 1 0 1
它在 excel 中的样子:
Products: Ball Bicycle Bat
Client 1: Ball Bicycle Bat
Client 2: Ball Bat
Client 3: Ball
Client 4: Bicycle Bat
有什么方法可以在 SSIS 中实现这一点?
您需要使用一些物品来完成此操作。
如何向数据流任务添加新列?
派生列将允许您创建这些新的布尔列。派生列使用表达式来计算值。创建新列时,您需要指定列名。您还需要确保数据类型符合预期。
我的表情是什么?
首先是no text 是NULL、空字符串还是填充字符串。知道当前行是否满足这些条件之一将告诉我们是否需要将新列设为 1 或 0。
一个值为 NULL 或 NOT NULL。如果它不为空,那么我们需要担心它是否为empty/padded。我们通过 ISNULL
表达式测试 NULL。
布尔或表示为||
通过 ==
进行相等性测试
我们使用 LEN
表达式检查空字符串。
我们需要从我们的列中删除所有尾随空格,看看它是否减少到一个空字符串。我们将使用 RTRIM
来完成此操作。
表达式必须求值,但我们有条件 (if) 逻辑。我们解决这个问题的方法是三元运算符 (boolean test) ? (true expr) : (false expr)
boolean 的 SSIS 系统数据类型是 DT_BOOL
演员由(DT_TYPE) VALUE
执行
综合起来
将派生列组件添加到您的数据流中。使列名Col1HasText
为了可读性添加了换行符
(isnull([Col1]) || LEN(RTRIM([Col1])) == 0) ?
((DT_BOOL) 0) :
((DT_BOOL) 1)
英文版:如果 Col1 为 null 或者 right-trimmed 版本的 Col1 的长度为零,那么我们要将 1 转换为 DT_BOOL(布尔值)的数据类型。否则,将零转换为 DT_BOOL
的数据类型
我想在 table 的位列中插入 0 或 1,0 表示没有文本,1 表示有文本。我正在通过 SSIS 中的 excel 源提取数据。在下面的例子中,它应该是:
Client 1: 1 1 1
Client 2: 1 0 1
它在 excel 中的样子:
Products: Ball Bicycle Bat
Client 1: Ball Bicycle Bat
Client 2: Ball Bat
Client 3: Ball
Client 4: Bicycle Bat
有什么方法可以在 SSIS 中实现这一点?
您需要使用一些物品来完成此操作。
如何向数据流任务添加新列?
派生列将允许您创建这些新的布尔列。派生列使用表达式来计算值。创建新列时,您需要指定列名。您还需要确保数据类型符合预期。
我的表情是什么?
首先是no text 是NULL、空字符串还是填充字符串。知道当前行是否满足这些条件之一将告诉我们是否需要将新列设为 1 或 0。
一个值为 NULL 或 NOT NULL。如果它不为空,那么我们需要担心它是否为empty/padded。我们通过 ISNULL
表达式测试 NULL。
布尔或表示为||
通过 ==
我们使用 LEN
表达式检查空字符串。
我们需要从我们的列中删除所有尾随空格,看看它是否减少到一个空字符串。我们将使用 RTRIM
来完成此操作。
表达式必须求值,但我们有条件 (if) 逻辑。我们解决这个问题的方法是三元运算符 (boolean test) ? (true expr) : (false expr)
boolean 的 SSIS 系统数据类型是 DT_BOOL
演员由(DT_TYPE) VALUE
综合起来
将派生列组件添加到您的数据流中。使列名Col1HasText
为了可读性添加了换行符
(isnull([Col1]) || LEN(RTRIM([Col1])) == 0) ?
((DT_BOOL) 0) :
((DT_BOOL) 1)
英文版:如果 Col1 为 null 或者 right-trimmed 版本的 Col1 的长度为零,那么我们要将 1 转换为 DT_BOOL(布尔值)的数据类型。否则,将零转换为 DT_BOOL
的数据类型