인덱스를 조회하여 데이터의 가치를 찾는 방법은 무엇입니까? [복사]

인덱스를 조회하여 데이터의 가치를 찾는 방법은 무엇입니까? [복사]

데이터 배열 목록이 있고 해당 인덱스(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 키-값 저장소인 awk와 redis의 완벽한 조합을 사용해 보세요.http://redis.io더 알아보기).

awk를 사용하여 2개의 파일("data_array.txt" 및 "index.txt")을 구문 분석하고 redis 명령을 생성하세요.

2개의 awk 스크립트 결과를 bash로 파이프하여 실행합니다. 그게 다야 :-)

단계별:

다음과 같이 세 번째 줄부터 시작하는 데이터 파일을 구문 분석하여 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

다음과 같이 세 번째 줄부터 시작하는 인덱스 파일을 구문 분석하여 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)

즐기다:-)

버니

@라훌 파틸
@Gilles

일부러 여기에 답변을 게시합니다. Abraham의 예제 데이터는 매우 투명하므로 내 답변을 빨리 이해할 수 있기를 바랍니다. 데이터유닉스의 vlookup 함수예시를 보니 헷갈리네요...

관련 정보