SuperTransform(クリーニング)

クリーニングステップ の変換仕様です。

フロー定義フォーマット

{
  "nodeType" : ".v2018_2_3.SuperTransform",
  "name" : "stg_order",
  "id" : "b48d5f2d-ca28-4bcf-a245-804df991dee2",
  "baseType" : "superNode",
  "nextNodes" : [ {
    "namespace" : "Default",
    "nextNodeId" : "516280ac-6481-4f47-81be-5734e6b7977e",
    "nextNamespace" : "Default"
  } ],
  "serialize" : false,
  "description" : null,
  "beforeActionAnnotations" : [ {
    "namespace" : "Default",
    "annotationNode" : {
      "nodeType" : ".v1.RenameColumn",
      "columnName" : "ID",
      "rename" : "ORDER_ID",
      "name" : "ID の名前を ORDER_ID に変更しました 1",
      "id" : "60091dae-7538-492f-9e17-e79bd6ea79a6",
      "baseType" : "transform",
      "nextNodes" : [ ],
      "serialize" : false,
      "description" : null
    }
  } ],
  "afterActionAnnotations" : [ ],
  "actionNode" : null
},

グラフへの変換

nextNodes 属性から、次のステップへの参照を取得し、エッジを構築します。

カラム定義の計算

親ステップのカラムに対して、クリーニング操作に合わせてカラム定義を更新します。 親ステップのカラム定義が不明の場合、自身も不明として扱います。

計算フィールドの作成

追加されたフィールド名のカラムを新たに定義に追加します。

型の変更

カラム定義は更新しません。

フィールドの複製

複製されたフィールド名のカラムを新たに定義に追加します。

値のフィルター

カラム定義は更新しません。

列の削除

削除されたフィールド名のカラムを定義から除外します。

カラム名の変更

元のフィールド名のカラムを定義から除外し、新しいフィールド名のカラムを定義に追加します。

SQLへの変換

各クリーニングの操作がCTEとして作成されます。

計算フィールドの作成

{
  "nodeType" : ".v1.AddColumn",
  "columnName" : "full_name",
  "expression" : "[first_name] + [last_name]",
  "name" : "Add add_col",
  "id" : "be7dcc07-e517-49a2-92b2-b65349a1b0e9",
  "baseType" : "transform",
  "nextNodes" : [ ],
  "serialize" : false,
  "description" : null
}
"<ノードID>" as (
    SELECT
        "<カラム定義のカラム>",
        "[first_name] + [last_name]" AS "full_name"
    FROM
        "<前CTE名>"
),

型の変更

{
  "nodeType" : ".v1.ChangeColumnType",
  "fields" : {
    "amount" : {
      "type" : "real",
      "calc" : null
    }
  },
  "name" : "amount を 数値 (小数) に変更 1",
  "id" : "0fe85cf9-cd62-4120-9ca8-4fe1584d1c5f",
  "baseType" : "transform",
  "nextNodes" : [ ],
  "serialize" : false,
  "description" : null
}
"<ノードID>" as (
    SELECT
        "<カラム定義のカラム>",
        CAST("amount", real) AS "amount"
    FROM
        "<前CTE名>"
),

フィールドの複製

{
    "nodeType" : ".v2019_2_3.DuplicateColumn",
    "columnName" : "amount-1",
    "expression" : "[amount]",
    "name" : "フィールド amount を複製 1",
    "id" : "6a045b6e-bbd5-4404-9847-ceede26d195a",
    "baseType" : "transform",
    "nextNodes" : [ ],
    "serialize" : false,
    "description" : null
}
"<ノードID>" as (
    SELECT
        "<カラム定義のカラム>",
        "amount",
        "amount" AS "amount-1"
    FROM
        "<前CTE名>"
),

値のフィルター

{
    "nodeType" : ".v1.FilterOperation",
    "name" : "フィルター",
    "id" : "e879c3c6-2118-4804-931f-e60439ef4870",
    "baseType" : "transform",
    "nextNodes" : [ ],
    "serialize" : false,
    "description" : null,
    "filterExpression" : "[customer_id]=1"
}
"<ノードID>" as (
    SELECT
        "<カラム定義のカラム>"
    FROM
        "<前CTE名>"
    WHERE
        "[customer_id]=1"
),

列の削除

{
    "nodeType" : ".v1.RemoveColumns",
    "name" : null,
    "id" : "RemoveColumnNodeTransform",
    "baseType" : "transform",
    "nextNodes" : [ ],
    "serialize" : false,
    "description" : null,
    "columnNames" : [ "Column" ]
}
"<ノードID>" as (
    SELECT
        "<columnNamesにあるカラムを除いた、カラム定義のすべてのカラム>"
    FROM
        "<前CTE名>"
),

カラム名の変更

{
  "nodeType" : ".v1.RenameColumn",
  "columnName" : "id",
  "rename" : "customer_id",
  "name" : "id の名前を customer_id に変更しました 1",
  "id" : "898b5ed2-ca54-4009-a2f1-c6ff2bad077b",
  "baseType" : "transform",
  "nextNodes" : [ ],
  "serialize" : false,
  "description" : null
}
"<ノードID>" as (
    SELECT
        "<カラム定義のカラム>",
        "id" AS "customer_id"
    FROM
        "<前CTE名>"
),

注意

Tableau式の解析を本ツールでは行いません。 計算フィールドやフィルター条件はすべて、Tableau式を文字列としてSQLに追加します。

適宜、利用するDBに合わせた修正を行ってください。