インデックスを照会してデータの値を見つける方法は? [コピー]

インデックスを照会してデータの値を見つける方法は? [コピー]

データ配列のリストがあり、そのインデックス(id)で値を見て、データ配列のインデックスIDに保存したいと思います。スプレッドシートVALUE LOOKUP関数でこれを行うことはできますが、まだこれを行うデータがたくさんあり、大量のデータセットの場合はスプレッドシート機能が高速ではないと思います。より速く実行できるスクリプトを教えてください。私のデータ配列、インデックスID、および提案された出力は次のとおりです。

データ配列

Id  Value 

1    10
2    20
3    30
4    40
6    60
8    80
10   100

索引

Id 

1
2
3
4
5
6
7
8
9
10
11
12
13

出力は次のとおりです

ID    Value
1  10
2  20
3  30
4  40
5  NULL
6  60
7  NULL
8  80
9  NULL 
10 100
11  NULL
12  NULL
13  NULL

また助けてくれてありがとう。

ベストアンサー1

非常に高速なオープンソースのNoSQL Key-Valueリポジトリであるawkとredisの完全な組み合わせを試してください。http://redis.io詳細はこちら)。

awkを使用して2つのファイル(「data_array.txt」と「index.txt」)を解析し、redisコマンドを生成します。

2つのawkスクリプトの結果をbashにパイプして実行します。それだけです:-)

ステップバイステップ:

次のように、3行目から始まるデータファイルを解析してredis "SET"ステートメントを生成します。

awk '{if (FNR > 2) \
print "redis-cli SET VALUE:" $1 " \"" $2"\""}' data_array.txt
redis-cli SET VALUE:1 "10"
redis-cli SET VALUE:2 "20"
redis-cli SET VALUE:3 "30"
redis-cli SET VALUE:4 "40"
redis-cli SET VALUE:6 "60"
redis-cli SET VALUE:8 "80"
redis-cli SET VALUE:10 "100"

redis "SET"ステートメントをbashにパイプして実行します。

awk '{if (FNR > 2) \
print "redis-cli SET VALUE:" $1 " \"" $2"\""}' data_array.txt | bash
OK
OK
OK
OK
OK
OK
OK

次のように、3行目から始まるインデックスファイルを解析してredis "GET"ステートメントを生成します。

awk '{if (FNR > 2) print "printf \"" $1 " \" && redis-cli GET VALUE:" $1}' index.txt
echo 1 && redis-cli GET VALUE:1
echo 2 && redis-cli GET VALUE:2
echo 3 && redis-cli GET VALUE:3
echo 4 && redis-cli GET VALUE:4
echo 5 && redis-cli GET VALUE:5
echo 6 && redis-cli GET VALUE:6
echo 7 && redis-cli GET VALUE:7
echo 8 && redis-cli GET VALUE:8
echo 9 && redis-cli GET VALUE:9
echo 10 && redis-cli GET VALUE:10
echo 11 && redis-cli GET VALUE:11
echo 12 && redis-cli GET VALUE:12
echo 13 && redis-cli GET VALUE:13

redis "GET"ステートメントをbashにパイプして実行します。

awk '{if (FNR > 2) \
print "printf \"" $1 " \" && redis-cli GET VALUE:" $1}' index.txt |\
bash
1 "10"
2 "20"
3 "30"
4 "40"
5 (nil)
6 "60"
7 (nil)
8 "80"
9 (nil)
10 "100"
11 (nil)
12 (nil)
13 (nil)

楽しむ:-)

バニー

ツイートをサイトに
埋め込む

わざわざここに答えを投稿します。 Abrahamのサンプルデータは非常に透明なので、私の答えをすぐに理解できることを願っています。データUnixのvlookup関数例を見ると混乱しています...

おすすめ記事