2017-04-14 16 views
0

PLU 테이블을 모든 상점 (HQ -> 상점)에 동기화하는 시나리오가 있습니다. 그러나 비용 및 가격 열은 참조 테이블의 가치를 기반으로 각 상점별로 구체적으로 적용됩니다. 따라서 동일한 PLU는 각 상점마다 다른 비용과 가격을 가질 수 있습니다. 조회 열 변환을 시도하지만 EXTERNAL_ID에서는 작동하지 않습니다. 이 시나리오를 어떻게 작동시킬 수 있습니까?SymmetricDS : EXTERNAL_ID의 변환 열

예 :

소스 테이블 (HQ) : PLU

소스 칼럼 : plucode, 이름, 비용, 가격


참조 표 (HQ) : PLUPrice

소스 열 : 한 상점, plucode, 비용, 가격


대상 테이블 (상점) : PLU

대상 칼럼 : plucode, 이름, 비용, 가격

insert into SYM_TRANSFORM_COLUMN (transform_id, include_on, target_column_name, source_column_name, pk, transform_type, transform_expression, transform_order, last_update_time, last_update_by, create_time) values (
    'plu', '*', 'cost', 'cost', 0, 
    'lookup', 'SELECT cost FROM PLUPrice WHERE PLUCODE = :PLUCODE AND STORECODE = :EXTERNAL_ID', 1, current_timestamp, 'Administrator', current_timestamp); 

답변

0

는 참조 테이블에 라우팅을 확인합니다. 하나의 열에 externalId가 포함 된 경우 열 기반 라우팅으로 설정하고, 그렇지 않으면 subselect 라우팅으로 설정합니다.

+0

원본 테이블의 비용 및 가격을 제외하고 두 테이블을 하나의 테이블에 개별적으로 동기화하기 전에 참조 테이블에서 비용 및 가격을 가져 왔습니다. 이것은 정상이지만 재로드 중에 하나의 문제가 있습니다. 참조 테이블을 놓친 다음 데이터가 동기화되지 않는 경우가 있습니다. 그래서 질문 하나의 테이블 만 동기화하려고했지만 성공하지는 않았습니다. 나는 가상 컬럼 개념을 사용하려고 시도하지만 성공하지는 못한다. 이게 효과가 있다면 어떨까요? – CSL

+0

변환을 사용하여 대상 노드의 다른 이름을 가진 두 테이블에 동기화하여 이름을 바꿉니다. 그런 다음 대상 노드에서 응용 프로그램에 예약 된 작업을 만들어 두 테이블이 동기화되어 있고 응용 프로그램에서 사용하는 단일 테이블에 데이터를 복사하는지 주기적으로 확인합니다. –

+0

제안 사항은 정상이지만이를 처리 할 추가 테이블을 만들지는 않습니다. 그것은 select 문에서 EXTERNAL_ID를 얻을 방법이 없기 때문입니까? – CSL