次の式のどこが間違っているのか疑問に思いました。
IF [Age] = Null() THEN Average([Age]) ELSE [Age] ENDIF
私がやろうとしていること 「セルが空白の場合、[年齢]と呼ばれる他のすべてのセルの平均でセルを埋めます。
どうもありがとうございました!
ETL プロセス中に null 値を修正するために多くの代入を行いますが、それを達成するには実際には 2 つの方法があります。
最初の方法: 代入ツール。準備カテゴリの「代入」ツールを使用できます。ツール オプションで、代入するフィールドを選択し、置換する受信値の [Null] のラジオ ボタンをクリックしてから、[値の置換] セクションの [平均] のラジオ ボタンをクリックします。ツールを直接使用する利点は、他の方法よりもはるかに複雑ではないことです。欠点は、1) マシンの仕様に比べて多数の行を修正しようとすると、信じられないほど遅くなる可能性がある (次の方法よりもはるかに遅い) ことと、2) 多くの説明なしにプロセスで使用するとエラーが発生することがあるということです。 .
第 2 の方法: 平均を計算し、数式を使用します。変換カテゴリの「集計」ツールを使用して、各列の平均フィールドを生成することもできます。平均を生成した後、[結合] カテゴリの [追加] ツールを使用してそれらをストリームに結合します。データベースの各行の平均値は同じになります。その時点で、質問で試みたように数式ツールを使用できます。例 IF [年齢] = Null() THEN [平均年齢] ELSE [年齢] ENDIF
2 番目の方法は、非常に大規模なデータセット (たとえば、7,000 万行を超える数十列で発生する可能性のある null を修正する) に対して実行する方がはるかに高速ですが、設定に時間がかかり、列ごとに作成する必要があります。
これは、Average 関数が機能する方法ではありません。1 つだけでなく、値のリスト全体を渡す必要があります。