はじめに
このトピックでは、SQLとMagic ETL DataFlowで利用可能なデータクリーニング演算の一覧を表示し、演算を使用する前後のデータの見え方を示します。データタイプを変更
例:ID番号のデータタイプを数字からテキストフィールドに変更| MySQLの場合 | Magic ETLの場合 | 前 | 後 |
|---|---|---|---|
CAST( | [列タイプを設定]タイルを使用します。 | 1 | 1(見た目は同じですが、テキストのディメンションを指定します) |
列を連結して複合フィールドを作成
例:「ファーストネーム」列と「姓」列を連結して「フルネーム」列を作成| MySQLの場合 | Magic ETLの場合 | 前 | 後 |
|---|---|---|---|
CONCAT( | [列を結合]タイルを使用します。 | ‘John’ | ‘Smith’(ファーストネームと姓が2つの独立した列にある) | ‘John Smith’ (単一の列が完全な名前を含んでいる) |
テキスト文字列の一部を抽出
例:ユーザーIDとして使用するメールアドレスの最初の部分を抽出| MySQLの場合 | Magic ETLの場合 | 前 | 後 |
|---|---|---|---|
SUBSTRING_INDEX( | その列に[テキストを置換]タイルを使用し、文字列のどの部分を空の文字列:@.+に置換するかを指定します。 | userid@email.com | userid |
日付を再フォーマット
例:非標準の日付文字列を日付タイプにフォーマットします| MySQLの場合 | Magic ETLの場合 | 前 | 後 |
|---|---|---|---|
STR_TO_DATE( | [列タイプを設定]タイルを使用します。 | 23.01.2017(文字列データタイプ) | 01/23/2017(日付データタイプ) |
日付列から日付属性を取得
例:日付列から曜日を抽出| MySQLの場合 | Magic ETLの場合 | 前 | 後 |
|---|---|---|---|
DAYNAME( | [日付の演算]タイルを使用します。 | 01/23/2017 | 月曜日 |
1つの列を列内の1つの文字にもとづいて2つの列に分割
例:「状態コード」列を、列内で見つかった/ 区切り文字にもとづいて状態コードの部分に分割します
| MySQLの場合 | Magic ETLの場合 | 前 | 後 |
|---|---|---|---|
SUBSTRING_INDEX( | その列に[テキストを置換]タイルを使用し、文字列のどの部分を空の文字列:最初の部分に対しては /.+ 、2番目の部分に対しては .+/ に置換するかを指定します。 | SHI/DELV | SHI | DELV |
列からエラーとなるスペースをトリミング
例:「Department」列の行頭と行末の空白文字をトリミング| MySQLの場合 | Magic ETLの場合 | 前 | 後 |
|---|---|---|---|
TRIM( | [テキストを置換]タイル内で正規表現を使用して、行頭と行末の空白文字を指定して、何もないものに置き換えます。 | ’ department ’ | ‘department’ |
全体の列の大文字/小文字の使い方を変更
例:「Category」列を大文字に変更| MySQLの場合 | Magic ETLの場合 | 前 | 後 |
|---|---|---|---|
UPPER( | [テキストフォーマット]タイル内の すべて大文字 オプションを使用します。 | health | HEALTH |
列の最初の文字を大文字にする
例:「Category」列の最初の単語の最初の文字を大文字にします| MySQLの場合 | Magic ETLの場合 | 前 | 後 |
|---|---|---|---|
CONCAT(UPPER(LEFT( | [テキストフォーマット]タイル内の 頭文字を大文字にする オプションを使用します。 | health | Health |
特定の列の値にもとづいて行を分類
例:ストア番号にもとづいて各行に地域を割り当てる| MySQLの場合 | Magic ETLの場合 | 前 | 後 |
|---|---|---|---|
(CASE WHEN | [行をフィルター] タイルを使ってストア番号にもとづいて別々のグループに分離し、 [定数を追加] を使って、各グループにカテゴリーを追加し、 [行を追加] を使って、分離されていた行を合せて元に戻します。 | store_number = 100 | store_number = 100 | region = ‘region_1’ |
特定の列の値にもとづいて行を分類
例:カテゴリーを名前の最初の文字にもとづいた動物名に割り当てます。| MySQLの場合 | Magic ETLの場合 | 前 | 後 |
|---|---|---|---|
(CASE WHEN | [テキストを置換]タイル内で正規表現を使用してパターンを識別し、カテゴリーを割り当てます。例えば、 ^H.+ はHで始まる名前を、 ^B.+ はBで始まる名前を、 ^A.+|^E.+ はAまたはEで始まる名前を、 ^[^H,b,a,E]+ はH、B、A、E,で始まらない名前を検索します。 | animal_names = ‘Horse’ | animal_names = ‘Horse’ | animal_names_categories = ‘Hs’ |
数値のしきい値にもとづいて行を分類
例:給与の額にもとづいて行を分類する| MySQLの場合 | Magic ETLの場合 | 前 | 後 |
|---|---|---|---|
(CASE WHEN | [行をフィルター]タイルを使ってストア番号にもとづいて別々のグループに分離し、[定数を追加]を使って、各グループにカテゴリーを追加し、[行を追加]を使って、分離されていた行を合せて元に戻します。 | salary = $45,000 | salary = $45,000 | salary_bucket = ‘<$50,000’ |