こんにちは、dtsx パッケージを使用して SQL サーバー ビジネス インテリジェンス開発スタジオに非常に新しい小さなプロジェクトを行っています。
int値を保持するNumberという列名のExcelファイルがあります
派生列変換を使用しています
式を使用して値が int かどうかを確認する方法はありますか?
何らかの種類の整数送信エラーでない場合
ありがとうございました。
こんにちは、dtsx パッケージを使用して SQL サーバー ビジネス インテリジェンス開発スタジオに非常に新しい小さなプロジェクトを行っています。
int値を保持するNumberという列名のExcelファイルがあります
派生列変換を使用しています
式を使用して値が int かどうかを確認する方法はありますか?
何らかの種類の整数送信エラーでない場合
ありがとうございました。
C# には IsNumeric(VB.Net) はありませんが、TryParse を使用して同じ機能を実現できます
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
int result;
if (int.TryParse(Row.Column.ToString(), out result))
{
Row.IsNumeric = 1;
}
else
{
Row.IsNumeric = 0;
}
}
vb.Net の同じコードは
If IsNumeric(Row.Column) Then
Row.IsNumeric=1 // Create a `IsNumeric` output column in script transformation of data type int
Else
Row.IsNumeric=0
End If
上記の機能はDerived Column Transformation
、式を使用して実現することもできます
ISNULL((DT_I4)(Column) == (DT_I4)(Column) ? 1 : 0) ? 0 : 1
SOで以前の回答を確認してください
SSIS 式言語には IsNumeric() 関数がないため、派生列コンポーネントを使用して同じことを行うことはできません。代わりにスクリプト コンポーネントを使用する必要があります。スクリプト コンポーネント内の次のコードは、同じことを実現します。
Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Public Class ScriptMain
Inherits UserComponent
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
Dim retNum As Double
'use TryParse to test if the value is numeric or not
If System.Double.TryParse(Row.Column, retNum) Then
Row.DirectRowToNumeric()
Else
Row.DirectRowToNonNumeric()
End If
End Sub
End Class
お役に立てれば
ラージ