cross_tableバイナリについてのドキュメント置き場.
.
├── README.md
├── common_error.md
├── data_in_out.md
├── guarantee.md
├── how_to_use.md
└── server_state.md
- common_error.md: よくあるエラーメッセージとその原因について
- data_in_out.md: データの入出力形式について
- guarantee.md: 動作保証条件について
- how_to_use.md: バイナリの使い方
- server_state.md: ISVサーバの状態説明
Firmから入力されたデータに対してISVサーバがどのような出力を返すかを簡単に説明します.
入力と出力の関係性についての説明であって,情報を秘匿するロジックや効率のよいアルゴリズムなど,実際にISV内部で動いているプログラムの説明ではないことに注意してください.
Firm1,2 がそれぞれ以下のような,IDと属性をheaderに持つテーブルをcsv形式で共通のISVサーバに送信します.
|
|
ISVサーバは受信した2つのテーブルをIDをkeyにしてjoinします. このとき,共通しないIDのデータは削除されます. また,Column名の先頭にはどちらのFirmから送られてきたデータかを表すbitが付与されます.
ID | 0:height | 1:weight |
---|---|---|
A1B2C | 160 | 50 |
D3E4F | 170 | 60 |
G5H6I | 180 | 70 |
J7K8L | 160 | 50 |
M9N0O | 170 | 60 |
O3P4Q | 180 | 70 |
P1Q2R | 180 | 70 |
S3T4U | 160 | 50 |
V5W6X | 170 | 60 |
Y7Z8A | 180 | 70 |
B9C0D | 160 | 50 |
L1M2N | 170 | 60 |
ID列を削除したのち,同じ内容の行をひとまとまりにし,その個数を number_of_rows
columnに書き込みます.
例えば,0:height
, 1:weight
がそれぞれ 170
, 60
の行は3行あるので,それらを一つの行にまとめ,number_of_rows
columnに3を書き込みます.
number_of_rows | 0:height | 1:weight |
---|---|---|
2 | 160 | 50 |
3 | 170 | 60 |
1 | 180 | 70 |
1 | 160 | 50 |
1 | 170 | 60 |
1 | 180 | 70 |
1 | 180 | 70 |
1 | 160 | 50 |
1 | 170 | 60 |
1 | 180 | 70 |
1 | 160 | 50 |
1 | 170 | 60 |
number_of_rows
が実行時にFirm側で指定した閾値 k
未満の行を削除します.
例えば閾値が number_of_rows
が
number_of_rows | 0:height | 1:weight |
---|---|---|
2 | 160 | 50 |
3 | 170 | 60 |
閾値が
ISVサーバはFirm0,1に最終的なテーブルを送信します.
number_of_rows | 0:height | 1:weight |
---|---|---|
2 | 160 | 50 |
3 | 170 | 60 |