OHDSI Home | Forums | Wiki | Github

Atlas tutorial후 작업중 생긴 문제점입니다

원광대학교 의료융합연구센터 노시형입니다.

다름이 아니라 지난 목요일 튜토리얼에서 실습한

Atlas에서 Export한 SQL문을 실행하는데 궁금증이 생겨 연락드렸습니다.

SQL문을 저희쪽 건보데이터 DB에서 실행하려고 하는데


이런식의 에러가 생기더라구요

@cdm_database_schema 부분을 저희쪽 DBschema로 변경하여도 에러는 그대로였습니다.

저희쪽에 설치된 Atlas에서 추출된 SQL문을 돌리려 해도 같은 에러가 출력되었습니다.

아래 에러 내용 추가하였습니다.

에러 내용은 스킴을 변경하지 않았을 때의 에러입니다.

변경 후에도 가장 아래의 @target_cohort_id를 선언하라는 에러는 사라지지 않는데

찾아봐도 없는 컬럼네임이더라구요…

메시지 137, 수준 15, 상태 2, 줄 10
스칼라 변수 "@cdm_database_schema"을(를) 선언해야 합니다.
메시지 137, 수준 15, 상태 2, 줄 12
스칼라 변수 "@cdm_database_schema"을(를) 선언해야 합니다.
메시지 137, 수준 15, 상태 2, 줄 22
스칼라 변수 "@cdm_database_schema"을(를) 선언해야 합니다.
메시지 137, 수준 15, 상태 2, 줄 24
스칼라 변수 "@cdm_database_schema"을(를) 선언해야 합니다.
메시지 137, 수준 15, 상태 2, 줄 47
스칼라 변수 "@cdm_database_schema"을(를) 선언해야 합니다.
메시지 102, 수준 15, 상태 1, 줄 49
‘)’ 근처의 구문이 잘못되었습니다.
메시지 137, 수준 15, 상태 2, 줄 107
스칼라 변수 "@cdm_database_schema"을(를) 선언해야 합니다.
메시지 102, 수준 15, 상태 1, 줄 109
‘)’ 근처의 구문이 잘못되었습니다.
메시지 1087, 수준 15, 상태 2, 줄 251
테이블 변수 "@target_database_schema"을(를) 선언해야 합니다.
메시지 1087, 수준 15, 상태 2, 줄 252
테이블 변수 "@target_database_schema"을(를) 선언해야 합니다.
메시지 137, 수준 15, 상태 2, 줄 253
스칼라 변수 "@target_cohort_id"을(를) 선언해야 합니다.

여보세요 @SiHyung_No,

@target_cohort_id는 코호트 테이블에서 "cohort_id"를 지정하는 데 사용됩니다. 결과를보고 싶다면 다음 쿼리를 실행할 수 있습니다.

select -1 as cohort_definition_id, person_id, start_date, end_date
FROM #collapse_constructor_output CO

"#collapse_constructor_output"은 코호트 테이블에 저장 될 코호트 레코드를 포함합니다.

Thanks for great comment @Chris_Knoll

I recommend you to use R instead of SQL for running that code like below.
First, save the script as .sql file (eg “target_cohort.sql”)
You can set target_cohort_id as you want. (in my example, I’ll use 1111)

해당하신 문제는 @ 다음에 나오는 모든 변수들을 설정해주시면 해결됩니다.(script 전체를 보면서 꼼꼼히 다 수정해주세요. 찾아바꾸기 기능을 사용하시는 것을 추천합니다.)
cdm database schema는 CDM 자료가 있는 DB 이름을 넣어주시면 되고 (CDM.dbo이런 식으로요)
target database schema에는 만들어질 cohort 가 들어갈 DB 이름을 넣어 주시면 됩니다 (저는 대개 CDM DB를 그냥
target database schema로 씁니다.)
target cohort id는 코호트 마다 부여하는 임의의 번호 입니다. 원하시는 번호 넣으시면 됩니다.

하지만 저는 SQL로 script 를 실행시키는 것보다, 하기 구문과 같이 R을 이용하시기를 권장합니다. (bold 체는 기관에 맞춰 바꿔야 하는 부분입니다.)

library(SqlRender)
library(CohortMethod)

connectionDetails<-createConnectionDetails(dbms=“sql server”,
server=" server IP",
schema=" DBname.dbo “,
user=” userID",
password=" user PW")
cdmDatabaseSchema <- “DBname.dbo
resultsDatabaseSchema <- “DBname.dbo
exposureTable<-“cohort
outcomeTable<-“cohort
cdmVersion <- “5”

connection<-connect(connectionDetails)
setwd(“folder name”)

sql <- readSql(“target_cohort.sql”)
sql <- renderSql(sql,
cdm_database_schema=cdmDatabaseSchema,
target_database_schema=resultsDatabaseSchema,
target_cohort_table=exposureTable,
target_cohort_id=1111)$sql
sql <- translateSql(sql,
targetDialect=connectionDetails$dbms)$sql
executeSql(connection, sql)

t