# カスタムテーブルデータインポート機能
# I.概要
場合によっては、適用するデータをuser
やevent
として表現できない場合があります。データを適用する場合は、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 パラメータの指定
- タイプ
- 説明:インポートデータソースの種類、現在のインポートツールのサポート:
txtfile
、mysql
、mysql
、ftp の 3 種類のインポートデータソース、その後、より多くのデータソースのサポートが追加され - タイプ:
string
- 必須:はい
- デフォルト:なし
- 説明:インポートデータソースの種類、現在のインポートツールのサポート:
- パラメータ
- 説明:異なるデータソースの具体的な配置は、三、データソース配置
- タイプ:
jsonObject
- 必須:はい
- デフォルト:なし
# 2.3.4 target パラメーターの指定
- appid
- 説明:インポートテーブルに対応する項目 appid は、TA システムのバックグラウンドで検出できます
- タイプ:
string
- 必須:はい
- デフォルト:なし
- テーブル
- 説明: TA システムにインポートされたテーブル名、注意:テーブル名はグローバルに重複することはできません。異なる項目に基づいて区別できるプレフィックスまたはサフィックス
- タイプ:
string
- 必須:はい
- デフォルト:なし
- テーブルデスク
- 説明:テーブルのコメントをインポートします。インポート時にこのパラメータを構成することをお勧めします。その後、テーブルを調べるときにテーブルの意味を明確
- タイプ:
string
- 必須:いいえ
- デフォルト:空
- パーティション_val
- 説明:インポートされたパーティション値、TA システムインポートされたカスタムテーブルはデフォルトでパーティションフィールド
$pt
ので、インポート時にインポートされたパーティション値を指定しなければならず、一般的にインポートされたデータの日付に
できます。例えば、@[{yyyMMdd}-{1day}]
、2.1 節で具体的な使用方法 - タイプ:
string
- 必須:はい
- デフォルト:なし
- 説明:インポートされたパーティション値、TA システムインポートされたカスタムテーブルはデフォルトでパーティションフィールド
- コラム
- 説明: TA システムにインポートされるテーブルフィールドの定義を定義します
name
、type
、comment
3 つの属性値をname
とtype
は必須フィールドです。
- 説明: TA システムにインポートされるテーブルフィールドの定義を定義します
[
{
"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
解析できる任意の日付形式に置き換えることができます。SSS
SSSSSS
- n は任意の整数であり、時間のオフセット値
- day は時間のオフセット単位を表し、次のように
取る
ことが
ができる
、曜日
、月
- 例:現在の時刻を仮定し
ます
@[{yyyMMdd}}]
置換は20180701
@[{yyyy-MM-dd}-{1day}]
に置き換え置き換え
@[{yyyMMddHH}+{2hour}}]
置換は2018070117
@[{yyyyMMddHHmm00}-{10minute}]
に置き換えます
# 三、データソース構成をインポートする
このセクションでは、現在サポートされているtxtfile
、mysql
、mysql
、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
- 必須:はい
- デフォルト:なし
- 説明: JSON の配列を使用してフィールド情報を記述する、構成されたテーブル内の同期が必要な列名のコレクション。を使用
- どこで
- 説明:条件をフィルタリングし、指定された
column
、table
、where
条件に基づいて SQL をステッチし、この SQL に基づいてデータを抽出します。実際のビジネスシーンでは、前日のデータを選択して同期することが多く、where 条件をlog_time>='@[{yyy-MM-dd 00: 00: 00}-{1day}]'and log_time<'@[{yyy-MM-dd 00: 00: 00}]'
。注意: where 条件を limit 10limit 10
。limit
は SQL の正当な where 句ではありません。where 条件はビジネス増分同期を効果的に行うことができる。where 文を入力しない場合、インポートツールはフルデータの同期と見なされます。 - タイプ:
string
- 必須:いいえ
- デフォルト:なし
- 説明:条件をフィルタリングし、指定された
- クエリスカル
- 説明:一部のビジネスシナリオでは、この構成項目がフィルタリングされる条件を説明するのに十分でない場合、ユーザーはこの構成パラメーターを使用してフィルター SQL をカスタマイズできます。ユーザーがこの項目を構成した後、インポートツールは
table
、column
これらの構成パラメータを無視して、この構成項目の内容を直接使用してデータを選別します。たとえば、マルチテーブル join 後にデータを同期する必要があります:select a, b from table_a join table_b ontable_a.id=
、ユーザーが querySql を構成したとき、インポートツールは table、column、where 条件の構成では、querySql 優先順位は table、column、where オプションよりも大きい。 - タイプ:
string
- 必須:いいえ
- デフォルト:なし
- 説明:一部のビジネスシナリオでは、この構成項目がフィルタリングされる条件を説明するのに十分でない場合、ユーザーはこの構成パラメーターを使用してフィルター SQL をカスタマイズできます。ユーザーがこの項目を構成した後、インポートツールは
# 3.2 txtfile データソース
txtfile データソースは、ローカルサーバー上のテキストを読み取り、TA のシステムテーブルにインポートします。現在、txtfile の使用制限と特性は次のとおりです
- サポートされており、TXT のテキストの読み取りのみがサポートされており、TXT のスキーマが二次元テーブル
- サポートクラス CSV 書式テキスト、カスタム区切り文字
- 複数の種類のデータ読み取り(文字列表現を使用)、列の切り抜き、列の定数
- 再帰読み取りをサポートし、テキスト名フィルタリング
- テキスト圧縮をサポートし、既存の圧縮形式は 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 の値の範囲はlong
、double
、string
、boolean
- タイプ:
jsonArray
- 必須:はい
- デフォルト:なし
- フィールドデリミター
- 説明:読み取りフィールド区切り文字
- タイプ:
string
- 必須:はい
- デフォルト:
,
- 圧縮
- 説明:テキスト圧縮タイプ、デフォルトで記入しないと圧縮がないことを意味します。サポート圧縮タイプは
zip
、gzip
、bzip2
。 - タイプ:
string
- 必須:いいえ
- デフォルト:圧縮なし
- 説明:テキスト圧縮タイプ、デフォルトで記入しないと圧縮がないことを意味します。サポート圧縮タイプは
- エンコーディング
- 説明:読み取りテキストのエンコード構成。
- タイプ:
string
- 必須:いいえ
- デフォルト:
utf-8
- スキップヘッダー
- 説明: CSV 形式のテキストには、ヘッダーが見出しの場合があります。スキップする必要があります。デフォルトはスキップしません。
- タイプ:
boolean
- 必須:いいえ
- デフォルト:
false
- ゼロフォーマット
- 説明:テキストブックでは標準文字列定義
null
(null ポインタ)を。
はnullFormat
提供しますnull
。たとえば、ユーザー設定:nullFormat:"\N"
、ソースデータが"\N"
、ta-tool はnull
フィールドと見なされます。 - タイプ:
string
- 必須:いいえ
- デフォルト:
\N
- 説明:テキストブックでは標準文字列定義