目录
此内容是否有帮助?

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

# I.概要

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

現在、次の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は、TEシステムのバックグラウンドで検出できます
    • タイプ:string
    • 必須:はい
    • デフォルト:なし
  • テーブル
    • 説明: TEシステムにインポートされたテーブル名、注意:テーブル名はグローバルに重複することはできません。異なる項目に基づいて区別できるプレフィックスまたはサフィックス
    • タイプ:string
    • 必須:はい
    • デフォルト:なし
  • テーブルデスク
    • 説明:テーブルのコメントをインポートします。インポート時にこのパラメータを構成することをお勧めします。その後、テーブルを調べるときにテーブルの意味を明確
    • タイプ:string
    • 必須:いいえ
    • デフォルト:空
  • パーティション_val
    • 説明:インポートされたパーティション値、TEシステムインポートされたカスタムテーブルはデフォルトでパーティションフィールド$ptので、インポート時にインポートされたパーティション値を指定しなければならず、一般的にインポートされたデータの日付できます。例えば、@[{yyyMMdd}-{1day}]、2.1節で具体的な使用方法
    • タイプ:string
    • 必須:はい
    • デフォルト:なし
  • コラム
    • 説明: TEシステムにインポートされるテーブルフィールドの定義を定義します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実行の結果をTEシステムのテーブルにインポート

# 3.1.1構成サンプル

  • mysqlテーブルをTEシステムにインポートする構成例:
{
  "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をTEシステムにインポートする構成例:
{
  "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データソースは、ローカルサーバー上のテキストを読み取り、TEのシステムテーブルにインポートします。現在、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