개요
모델에서 relation ship의 지정을 잘못했으므로, 비망을 위해 메모합니다.
초보의 초보이므로, 자세한 분은 스루 해 주세요. 실수
아래와 같은 모델을 지정할 때, relation ship에는 무엇이 들어갈 것입니다. 대답은 ManyTable(Multitable)에 대해 OneTable(1)을 JOIN하므로 many_to_one입니다. 초보의 초보입니다만, 이것을, one_to_many 에 실수하면 무슨 일이 일어날까? 라는 이야기입니다. explore: ManyTable{
join: OneTable{
relationship: ????★ここ★????
sql_on: ${ManyTable.joinkey} = ${OneTable.joinkey} ;;
}
}
Relation Ship이란
many_to_one
관계성
테이블 관계입니다. 예를 들어, 다음 테이블 Many/One을 고려하면 Many(다)에 대해서, One(1)의 관계성이므로, 다:1(many_to_one)인 것입니다. LEFT JOIN과 건수 카운트
many_to_one에서 LEFT JOIN하면 이런 느낌이군요. 이 조인시에 Many 측의 건수를 세려면, 조인한 테이블에 대해서, 단순히, count(*) 해 주면 되는 것입니다. 다측이 좌표, 한편, LEFT JOIN이므로, count(*)로, A,B,C,D,E⇒5행으로 세어집니다. one_to_many
관계성
조금 반대입니다. 일반적으로 many_to_one의 많은 (트랜잭션)을 왼쪽으로, 1 (마스터)을 오른쪽으로 가져오는 경우가 많다고 생각합니다. LEFT JOIN과 건수 카운트
one_to_many에서 LEFT JOIN하면 이런 느낌입니다. ONE 측이 왼쪽 테이블이므로 조인 할 수있는 레코드의 경우 왼쪽에 여러 번 나타납니다. (아래에서 말하는 A와 B) 따라서 One 측의 레코드 수를 계산하려면 기본 키 (또는 후보 키)로 distinct하고 싶습니다. 본건은, Looker 관계없이 여러가지 논의되고 있네요.
Count one-to-many using left join gives wrong count on source table Prevent duplicate record counts in one to many query Relation Ship 지정을 잘못하면
처음에 언급했듯이 many_to_one (긍정)으로 지정해야하는 부분을 one_to_many (오)로 지정하면 LEFT JOIN의 건수 카운트로,
사실, count (*) 및 pk를 사용하지 않고 건수를 계산할 수있는 처리에 대해 Looker는 count(distinct pk) 및 pk에서 중복 제거를 수행한 후 카운트를 시도합니다. 그리고, 좌표측에, 주키(pk)의 지정이 없는 경우, 아래와 같은 에러를 출력합니다.
왼쪽 표에 대해 pk를 요구하는 것이군요. Field 'ManyTbl Count' cannot be calculated because of a one_to_many or many_to_many join.
Add a primary key to ManyTbl
따라서
초보의 초보입니다만, (당연합니다만,)
Relation Ship을 올바르게 지정합니다. (비망을 위해), 다시 한번, 모델 정의를 기재합니다. 아래입니다. explore: ManyTable{
join: OneTable{
relationship: many_to_one # Manyに対する、Oneなので、many_to_one
sql_on: ${ManyTable.joinkey} = ${OneTable.joinkey} ;;
}
}
그 위에,
원칙적으로 기본 키는 지정한다. RDBMS에서 기본 키가 없으면 열 조합으로 복합 기본 키를 구성 할 수있는 경우 Looker에서 지정합니다.
지정 방법은 Dealing with Non-Unique Primary Keys 에서 발췌합니다. dimension: compound_primary_key {
primary_key: yes
hidden: yes
type: string
sql: CONCAT(${TABLE}.primary_key_1, ' ', ${TABLE}.primary_key_2) ;;
}
마지막으로
초보의 초보의 실수로 부끄럽지만, 누군가의 도움이된다면,
Reference
이 문제에 관하여(Looker에서 Relation Ship 지정 및 기본 키), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shnchr/items/5a9506c8e41e86d5b85f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)