コンテンツにスキップ

SINK

すべての tql スクリプトは、いずれか1つのシンク(SINK)関数で終える必要があります。

INSERT() は、入力レコードをMachbase Neoデータベースに保存する基本的なシンクです。CHART() は入力レコードをさまざまなチャートとして描画し、JSON()CSV() は適切な形式にエンコードします。

tql_sink

INSERT()

構文: INSERT( [bridge(),] columns..., table() [, tag()] )

INSERT() は、入力レコードごとに INSERT 文を実行して、指定したデータベーステーブルに保存します。

  • bridge() bridge(’name’):省略可能です。
  • columns string:カラム名のリスト。
  • table() table(’name’):保存先のテーブル名を指定します。
  • tag() tag(’name’):省略可能です。タグテーブルにのみ使用できます。

タグ名を含むレコードをMachbaseに書き込みます。

1
2
3
4
5
6
FAKE(json({
    ["temperature", 1708582790, 23.45],
    ["temperature", 1708582791, 24.56]
}))
MAPVALUE(1, value(1)*1000000000) // エポック秒をナノ秒に変換
INSERT("name", "time", "value", table("example"))

ブリッジ接続したデータベースにレコードを挿入します。

1
2
3
4
INSERT(
    bridge("sqlite"),
    "company", "employee", "created_on", table("mem_example")
)

APPEND()

構文: APPEND( table() )

APPEND() は、Machbase Neoのappendメソッドで入力レコードを指定したデータベーステーブルに保存します。

  • table() table(string):保存先のテーブルを指定します。
1
2
3
4
5
6
FAKE(json({
    ["temperature", 1708582794, 12.34],
    ["temperature", 1708582795, 13.45]
}))
MAPVALUE(1, value(1)*1000000000 ) // エポック秒をナノ秒に変換
APPEND( table("example") )

CSV()

構文: CSV( [tz(), timeformat(), precision(), rownum(), heading(), delimiter(), nullValue(), binaryformat() ] )

結果のレコードをCSV形式で出力します。各レコードの値がCSV行のフィールドになります。 末尾の連続する2つの改行文字(\n\n)がデータの終端を示します。

たとえば、レコードが {key: k, value:[v1,v2]} の場合、CSVレコード v1,v2 を生成します。

  • tz tz(name):タイムゾーン。既定値は tz('UTC') です。
  • timeformat timeformat(string):DATETIMEフィールドの出力形式。既定値は timeformat('ns') です。
  • rownum rownum(boolean):行番号カラムを追加します。
  • precision precision(int):浮動小数点フィールドの精度。precision(-1) は制限なし、precision(0) は整数に変換します。
  • heading heading(boolean):先頭行にフィールド名を追加します。
  • delimiter delimiter(string):フィールドの区切り文字を指定します。既定値はカンマ(,)です。
  • nullValue()NULL の代替文字列。既定値は nullValue('NULL') です。 Since v8.0.14
  • cache():結果データをキャッシュします。詳細は結果データのキャッシュを参照してください。 Since v8.0.43
  • binaryformat() binaryformat(string):BINARYカラムのエンコード形式。hexbase64bytespreview をサポートします。 Since v8.5.2
1
2
3
FAKE( arrange(1, 3, 1))
MAPVALUE(1, value(0)*10)
CSV()
1,10
2,20
3,30

JSON()

構文: JSON( [transpose(), tz(), timeformat(), precision(), rownum(), rowsFlatten(), rowsArray(), binaryformat() ] )

レコードの値からJSON形式の結果を生成します。

  • transpose transpose(boolean):行と列を転置します。多くのチャートライブラリでは transpose(true) が便利です。
  • tz tz(name):タイムゾーン。既定値は tz('UTC') です。
  • timeformat timeformat(string):DATETIMEフィールドの出力形式。既定値は timeformat('ns') です。
  • rownum rownum(boolean):行番号カラムを追加します。
  • precision precision(int):浮動小数点フィールドの精度。precision(-1) は制限なし、precision(0) は整数に変換します。
  • rowsFlatten rowsFlatten(boolean):JSONオブジェクトの rows フィールドの配列の次元を減らします。JSON()transpose(true)rowsFlatten(true) を両方指定した場合、rowsFlatten(true) は無視され、transpose(true) だけが適用されます。 Since v8.0.12
  • rowsArray rowsArray(boolean):各レコードをオブジェクトとする配列を生成します。rowsArray(true)transpose(true)rowsFlatten(true) より優先されます。 Since v8.0.12
  • cache():結果データをキャッシュします。詳細は結果データのキャッシュを参照してください。 Since v8.0.43
  • binaryformat() binaryformat(string):BINARYカラムのエンコード形式。hexbase64bytespreview をサポートします。 Since v8.5.2
1
2
3
FAKE( arrange(1, 3, 1))
MAPVALUE(1, value(0)*10)
JSON()
{
    "data": {
        "columns": [ "x", "column" ],
        "types": [ "double", "double" ],
        "rows": [ [ 1, 10 ], [ 2, 20 ], [ 3, 30 ] ]
    },
    "success": true,
    "reason": "success",
    "elapse": "228.541µs"
}

NDJSON()

構文: NDJSON( [tz(), timeformat(), rownum(), binaryformat()] ) Since v8.0.33

レコードの値からNDJSON形式の結果を生成します。

NDJSON(Newline Delimited JSON)は、各行が有効なJSONオブジェクトである、JSONデータのストリーミング形式です。JSONオブジェクトを1つずつ扱えるため、大規模なデータセットやストリーミングデータの処理に適しています。 末尾の連続する2つの改行文字(\n\n)がデータの終端を示します。

  • tz tz(name):タイムゾーン。既定値は tz('UTC') です。
  • timeformat timeformat(string):DATETIMEフィールドの出力形式。既定値は timeformat('ns') です。
  • rownum rownum(boolean):行番号カラムを追加します。
  • cache():結果データをキャッシュします。詳細は結果データのキャッシュを参照してください。 Since v8.0.43
  • binaryformat() binaryformat(string):BINARYカラムのエンコード形式。hexbase64bytespreview をサポートします。 Since v8.5.2
1
2
SQL(`select * from example where name = 'neo_load1' limit 3`)
NDJSON(timeformat('Default'), tz('local'), rownum(true))
{"NAME":"neo_load1","ROWNUM":1,"TIME":"2024-09-06 14:46:19.852","VALUE":4.58}
{"NAME":"neo_load1","ROWNUM":2,"TIME":"2024-09-06 14:46:22.853","VALUE":4.69}
{"NAME":"neo_load1","ROWNUM":3,"TIME":"2024-09-06 14:46:25.852","VALUE":4.69}

MARKDOWN()

Markdown形式またはHTML形式の表を生成します。

構文: MARKDOWN( [ options... ] )

  • tz(string):タイムゾーン。既定値は tz('UTC') です。
  • timeformat(string):DATETIMEフィールドの出力形式。既定値は timeformat('ns') です。
  • html(boolean):HTMLレンダラーで結果を生成します。既定値は false です。
  • rownum(boolean):行番号カラムを表示します。
  • precision precision(int):浮動小数点フィールドの精度。precision(-1) は制限なし、precision(0) は整数に変換します。
  • brief(boolean):結果行を省略します。brief(true)briefCount(5) と同じです。
  • briefCount(limit int):レコード数が指定した上限を超えると、結果行を省略します。0 の場合は省略しません。
  • binaryformat() binaryformat(string):BINARYカラムのエンコード形式。hexbase64bytespreview をサポートします。 Since v8.5.2
1
2
3
4
5
6
7
8
FAKE( csv(`
10,The first line 
20,2nd line
30,Third line
40,4th line
50,The last is 5th
`))
MARKDOWN()
|column0 |	column1 |
|:-------|:---------|
| 10     | The first line |
| 20     | 2nd line |
| 30     | Third line |
| 40     | 4th line |
| 50     | The last is 5th |

HTML()

構文: HTML(templates...) Since v8.0.52

指定したテンプレートを使ってHTML文書を生成します。

詳しい使い方と例は HTML を参照してください。

TEXT()

構文: TEXT(templates...) Since v8.0.52

指定したテンプレートを使ってテキスト文書を生成します。

HTML() と同様に動作しますが、データにHTMLエスケープを適用しません。

DISCARD()

構文: DISCARD() Since v8.0.7

DISCARD() は、すべてのレコードを何も出力せずに破棄します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
FAKE( json({
    [ 1, "hello" ],
    [ 2, "world" ]
}))
WHEN( value(0) == 2, do( value(0), strToUpper(value(1)), {
    ARGS()
    WHEN( true, doLog("OUTPUT:", value(0), value(1)) )
    DISCARD()
}))
CSV()

CHART()

構文: CHART() Since v8.0.8

Apache EChartsでチャートを生成します。

さまざまな使用例は CHART()の例を参照してください。

最終更新日