目录
此内容是否有帮助?

# カスタムテーブルデータインポート機能

# I.概要

場合によっては、適用するデータをusereventとして表現できない場合があります。データを適用する場合は、data_transferコマンドを使用してカスタムデータを TA システムにインポートし、イベントテーブルとユーザーテーブルを関連付けます。

現在、次の 2 つのインポートデータソースがサポートされています。

  • mysql:リモート mysql データベース
  • txtfile:ローカルテキスト

# 二、使用説明

# 2.1 コマンド説明

データインポートのコマンドは次のとおりです。

ta-tool data_transfer -conf <config files> [--date xxx]

# 2.2 コマンドパラメータの説明

# 2.2.1-conf

渡されたパラメータはインポートテーブルの構成ブックパスで、各テーブルは構成ブックで、複数のテーブルの同時インポートをサポートし、ワイルドカード方式をサポートしています/data/config/*または./config/*. json

# 2.2.1-日付

オプションパラメータ**--date**:オプション、パラメータはデータの日付を表し、時間マクロはこの基準時間に基づいて置換され、伝達されない場合はデフォルトで現在の日付を取り、形式はYYYYY-MM-DD、時間マクロの具体的な使用方法は、時間マクロの使用方法時間マクロの使用方法

# 2.3 配置文書の説明

# 2.3.1 単一テーブルの構成例は次のとおりです。

{
  "parallel_num": 2,
  "source": {
    "type": "txtfile",
    "parameter": {
      "path": ["/data/home/ta/importer_test/data/*"],
      "encoding": "UTF-8",
      "column": ["*"],
      "fieldDelimiter": "\t"
    }
  },
  "target": {
    "appid": "test-appid",
    "table": "test_table",
    "table_desc": "导入测试表",
    "partition_value": "@[{yyyyMMdd}-{1day}]",
    "column": [
      {
        "name": "col1",
        "type": "timestamp",
        "comment": "时间戳"
      },
      {
        "name": "col2",
        "type": "varchar"
      }
    ]
  }
}

# 2.3.2 外層パラメータの説明

  • パラレル・ナム
    • 説明:同時スレッド数をインポートし、インポートの速度を制御します
    • タイプ:int
    • 必須:はい
    • デフォルト:なし
  • 出典
    • 説明:インポートデータソースの特定のパラメーター構成
    • タイプ:jsonObject
    • 必須:はい
    • デフォルト:なし
  • ターゲット
    • 説明:エクスポート先テーブルの特定のパラメーター構成
    • タイプ:jsonObject
    • 必須:はい
    • デフォルト:なし

# 2.3.3 source パラメータの指定

  • タイプ
    • 説明:インポートデータソースの種類、現在のインポートツールのサポート:txtfilemysqlmysql、ftp の 3 種類のインポートデータソース、その後、より多くのデータソースのサポートが追加され
    • タイプ:string
    • 必須:はい
    • デフォルト:なし
  • パラメータ
    • 説明:異なるデータソースの具体的な配置は、三、データソース配置
    • タイプ:jsonObject
    • 必須:はい
    • デフォルト:なし

# 2.3.4 target パラメーターの指定

  • appid
    • 説明:インポートテーブルに対応する項目 appid は、TA システムのバックグラウンドで検出できます
    • タイプ:string
    • 必須:はい
    • デフォルト:なし
  • テーブル
    • 説明: TA システムにインポートされたテーブル名、注意:テーブル名はグローバルに重複することはできません。異なる項目に基づいて区別できるプレフィックスまたはサフィックス
    • タイプ:string
    • 必須:はい
    • デフォルト:なし
  • テーブルデスク
    • 説明:テーブルのコメントをインポートします。インポート時にこのパラメータを構成することをお勧めします。その後、テーブルを調べるときにテーブルの意味を明確
    • タイプ:string
    • 必須:いいえ
    • デフォルト:空
  • パーティション_val
    • 説明:インポートされたパーティション値、TA システムインポートされたカスタムテーブルはデフォルトでパーティションフィールド$ptので、インポート時にインポートされたパーティション値を指定しなければならず、一般的にインポートされたデータの日付できます。例えば、@[{yyyMMdd}-{1day}]、2.1 節で具体的な使用方法
    • タイプ:string
    • 必須:はい
    • デフォルト:なし
  • コラム
    • 説明: TA システムにインポートされるテーブルフィールドの定義を定義しますnametypecomment3 つの属性値をnametypeは必須フィールドです。
[
  {
    "name": "col1",
    "type": "timestamp",
    "comment": "时间戳"
  },
  {
    "name": "col2",
    "type": "varchar"
  }
]

ソース側が mysql で、テーブル全体をインポートする場合(つまりcolumnフィールドが["*"])、targetで columncolumn引数を渡さず、インポートツールは mysql のテーブル構造を優先します。残りの場合、このフィールドは必須です

  • タイプ:jsonArray
  • 必須:いいえ
  • デフォルト: mysqlsource 側のテーブルスキーマ定義

# 2.4 タイムマクロの使用方法

設定テキストの内部で時間マクロを使って時間パラメータを置き換えることができ、ta-tool ツールはインポートした開始時間を基準にして、時間マクロのパラメータに基づいて時間のオフセット計算を行い、設定テキストの時間マクロを置き換えて、サポートする時間マクロ形式:@[{yyyyMMdd}]@[{yyyyMMdd}-{nday}]@[{yyyMMdd}+{nday}]など

  • yyyMMddは、JavadateFormat解析できる任意の日付形式に置き換えることができます。SSSSSSSSS
  • n は任意の整数であり、時間のオフセット値
  • day は時間のオフセット単位を表し、次のように取ることできる曜日
  • 例:現在の時刻を仮定します
    • @[{yyyMMdd}}]置換は20180701
    • @[{yyyy-MM-dd}-{1day}]に置き換え置き換え
    • @[{yyyMMddHH}+{2hour}}]置換は2018070117
    • @[{yyyyMMddHHmm00}-{10minute}]に置き換えます

# 三、データソース構成をインポートする

このセクションでは、現在サポートされているtxtfilemysqlmysql、ftp の 3 種類のデータソースをインポートします。データソースによっては、source のパラメータを調整する必要があります

# 3.1 mysql データソース

データソースは JDBC コネクタを介してリモートの mysql データベースに接続され、ユーザーが設定した情報に基づいてクエリ SELECT SQL 文を生成してリモートの mysql データベースに送信し、その SQL 実行の結果を TA システムのテーブルにインポート

# 3.1.1 構成サンプル

  • mysql テーブルを TA システムにインポートする構成例:
{
  "parallel_num": 2,
  "source": {
    "type": "mysql",
    "parameter": {
      "username": "test",
      "password": "test",
      "column": ["*"],
      "connection": [
        {
          "table": ["test_table"],
          "jdbcUrl": ["jdbc:mysql://mysql-ip:3306/testDb"]
        }
      ]
    }
  },
  "target": {
    "appid": "test-appid",
    "table": "test_table_abc",
    "table_desc": "mysql测试表",
    "partition_value": "@[{yyyy-MM-dd}-{1day}]"
  }
}
  • カスタム sql を TA システムにインポートする構成例:
{
  "parallel_num": 1,
  "source": {
    "type": "mysql",
    "parameter": {
      "username": "test",
      "password": "test",
      "connection": [
        {
          "querySql": [
            "select db_id,log_time from test_table where log_time>='@[{yyyy-MM-dd 00:00:00}-{1day}]' and log_time<'@[{yyyy-MM-dd 00:00:00}]'"
          ],
          "jdbcUrl": ["jdbc:mysql://mysql-ip:3306/testDb"]
        }
      ]
    }
  },
  "target": {
    "appid": "test-appid",
    "table": "test_table_abc",
    "table_desc": "mysql测试表",
    "partition_value": "@[{yyyy-MM-dd}-{1day}]",
    "column": [
      {
        "name": "db_id",
        "type": "bigint",
        "comment": "db序号"
      },
      {
        "name": "log_time",
        "type": "timestamp",
        "comment": "时间戳"
      }
    ]
  }
}

# 3.1.2 parameter パラメータ説明

  • jdb cUrd
    • 説明: JSON の配列記述を使用して、両端のデータベースへの JDBC 接続情報を記述します。jdbcUrl は接続構成ユニットに含める必要があることに注意してください。通常、JSON 配列は JDBC 接続を入力します。
    • タイプ:jsonArray
    • 必須:はい
    • デフォルト:なし
  • ユーザー名
    • 説明:データソースのユーザー名
    • タイプ:string
    • 必須:はい
    • デフォルト:なし
  • パスワード
    • 説明:データソースはユーザー名のパスワードを指定します
    • タイプ:string
    • 必須:はい
    • デフォルト:なし
  • テーブル
    • 説明:同期が必要なテーブルを選択します。JSON の配列記述を使用するため、複数のテーブルを同時に抽出できます。複数のテーブルとして構成する場合、ユーザーは複数のテーブルが同じスキーマ構造であることを確認する必要があります。テーブルは、接続構成ユニットに含める必要があることに注意してください。
    • タイプ:jsonArray
    • 必須:はい
    • デフォルト:なし
  • コラム
    • 説明: JSON の配列を使用してフィールド情報を記述する、構成されたテーブル内の同期が必要な列名のコレクション。を使用*番号を使用すると、デフォルトですべての列構成が使用さ["*"]
    • タイプ:jsonArray
    • 必須:はい
    • デフォルト:なし
  • どこで
    • 説明:条件をフィルタリングし、指定されたcolumntablewhere条件に基づいて SQL をステッチし、この SQL に基づいてデータを抽出します。実際のビジネスシーンでは、前日のデータを選択して同期することが多く、where 条件をlog_time>='@[{yyy-MM-dd 00: 00: 00}-{1day}]'and log_time<'@[{yyy-MM-dd 00: 00: 00}]'。注意: where 条件を limit 10limit 10limitは SQL の正当な where 句ではありません。where 条件はビジネス増分同期を効果的に行うことができる。where 文を入力しない場合、インポートツールはフルデータの同期と見なされます。
    • タイプ:string
    • 必須:いいえ
    • デフォルト:なし
  • クエリスカル
    • 説明:一部のビジネスシナリオでは、この構成項目がフィルタリングされる条件を説明するのに十分でない場合、ユーザーはこの構成パラメーターを使用してフィルター SQL をカスタマイズできます。ユーザーがこの項目を構成した後、インポートツールはtablecolumnこれらの構成パラメータを無視して、この構成項目の内容を直接使用してデータを選別します。たとえば、マルチテーブル join 後にデータを同期する必要があります:select a, b from table_a join table_b ontable_a.id=、ユーザーが querySql を構成したとき、インポートツールは table、column、where 条件の構成では、querySql 優先順位は table、column、where オプションよりも大きい。
    • タイプ:string
    • 必須:いいえ
    • デフォルト:なし

# 3.2 txtfile データソース

txtfile データソースは、ローカルサーバー上のテキストを読み取り、TA のシステムテーブルにインポートします。現在、txtfile の使用制限と特性は次のとおりです

  1. サポートされており、TXT のテキストの読み取りのみがサポートされており、TXT のスキーマが二次元テーブル
  2. サポートクラス CSV 書式テキスト、カスタム区切り文字
  3. 複数の種類のデータ読み取り(文字列表現を使用)、列の切り抜き、列の定数
  4. 再帰読み取りをサポートし、テキスト名フィルタリング
  5. テキスト圧縮をサポートし、既存の圧縮形式は zip、gzip、bzip2

# 3.2.1 構成サンプル

{
  "parallel_num": 5,
  "source": {
    "type": "txtfile",
    "parameter": {
      "path": ["/home/ftp/data/testData/*"],
      "column": [
        {
          "index": 0,
          "type": "long"
        },
        {
          "index": 1,
          "type": "string"
        }
      ],
      "encoding": "UTF-8",
      "fieldDelimiter": "\t"
    }
  },
  "target": {
    "appid": "test-appid",
    "table": "test_table_abc",
    "table_desc": "mysql测试表",
    "partition_value": "@[{yyyy-MM-dd}-{1day}]",
    "column": [
      {
        "name": "db_id",
        "type": "bigint",
        "comment": "db序号"
      },
      {
        "name": "log_time",
        "type": "timestamp",
        "comment": "时间戳"
      }
    ]
  }
}

# 3.2.2 parameter パラメータの説明

  • 経路
    • 説明:ローカルブックシステムのパス情報は、ここで複数のパスの記入をサポートできることに注意してください。ワイルドカードを指定すると、インポートツールは複数のテキストをトラバースしようとします。例:指定/data/*、読み取り/dataディレクトリ内のすべてのテキストを表します。現在は**番号のみがサポートされています。特に、インポートツールは、1 つのジョブで同期されたすべての TextFile を同じデータシートと見なします。ユーザーは、すべての File がスキーマ情報の同じセットに適応できることを自分で保証する必要があります。テキストの読み取りは CSV 形式であることを保証する必要があります。
    • タイプ:string
    • 必須:はい
    • デフォルト:なし
  • コラム
    • 説明:フィールドリストを読み取り、typeソースデータのタイプを指定し、index現在のテキストの何番目の列から来ているかを指定し、value現在のタイプを定数として指定し、ソーステキストからデータを読み取るのではなく、valuevalue値に基づいて対応する列を自動的に生成します。

デフォルトでは、ユーザーはすべてstring型でデータを読み取ることができます。

 "column": ["*"]

ユーザーは Column フィールド情報を指定できます。

({
  "type": "long",
  "index": 0
},
{
  "type": "string",
  "value": "2018-07-01 00:00:00"
})

ユーザーが Column 情報を指定するには、typeを入力し、index/valueする必要があります。

type の値の範囲はlongdoublestringboolean

  • タイプ:jsonArray
  • 必須:はい
  • デフォルト:なし
  • フィールドデリミター
    • 説明:読み取りフィールド区切り文字
    • タイプ:string
    • 必須:はい
    • デフォルト:,
  • 圧縮
    • 説明:テキスト圧縮タイプ、デフォルトで記入しないと圧縮がないことを意味します。サポート圧縮タイプはzipgzipbzip2
    • タイプ:string
    • 必須:いいえ
    • デフォルト:圧縮なし
  • エンコーディング
    • 説明:読み取りテキストのエンコード構成。
    • タイプ:string
    • 必須:いいえ
    • デフォルト:utf-8
  • スキップヘッダー
    • 説明: CSV 形式のテキストには、ヘッダーが見出しの場合があります。スキップする必要があります。デフォルトはスキップしません。
    • タイプ:boolean
    • 必須:いいえ
    • デフォルト:false
  • ゼロフォーマット
    • 説明:テキストブックでは標準文字列定義null(null ポインタ)をnullFormat提供しますnull。たとえば、ユーザー設定:nullFormat:"\N"、ソースデータが"\N"、ta-tool はnullフィールドと見なされます。
    • タイプ:string
    • 必須:いいえ
    • デフォルト:\N