값의 경우 1970-01-01 00:00:00 UTC 이후의 초 수입니다(그 이전의 타임스탬프에 대해서는 음수). for 및 값, 시간대 또는 일광 절약 시간에 관계없이 1970-01-01 00:00:00 이후의 공칭 초 수입니다. 값의 경우 간격의 총 시간(초)timestamp with time zonedatetimestampinterval
복천년 - (1900년대는두번째천년기입니다. 세번째천년기는 2001년 1월 1일에시작되었습니다.)
MILLISECONDS
초(초) 필드(소수부분포함)에 1000을곱합니다. 여기에는전체초가포함됩니다.
MINUTE
분필드(0–59)
MONTH
값의 경우 연도 내의 월 수(1–12) ; 값의 경우 개월 수,
QUARTER
날짜가있는연도의분기(1–4)
SECOND
초(초) 필드(소수자릿수초포함)
WEEK
해당 연도의 ISO 8601 주 번호 매기기 주의 번호입니다. 정의에 따라 ISO 주는 월요일에 시작하고 연도의 첫 번째 주에는 해당 연도의 1월 4일이 포함됩니다. 즉, 연도의 첫 번째 목요일은 해당 연도의 1주차에 있습니다.
ISO 주 번호 매기기 시스템에서는 1월 초 날짜가 전년도의 52번째 주 또는 53번째 주에 속하고 12월 말 날짜가 다음 해 첫 번째 주에 포함될 수 있습니다. 예를 들어 는 2004년 53번째 주의 일부이고, 는 2005년의 52번째 주의 일부이며, 는 2013년 첫째 주의 일부입니다. 일관된 결과를 얻으려면 필드를 함께 사용하는 것이 좋습니다.
(Azure) Databricks Study를 해가면서 확인 한 부분에 대해 기술하고자 한다. 처음 발견은 사내 프로젝트를 진행하며, 외부(AWS S3)에 있는 데이터를 Azure Data Bricks로 옮기는 시나리오를 구성하여 진행하였고, 기존 만든 테이블에 데이터를 DELETE하고자 자연스럽게 DELETE 구문을 날렸으나...
Error 발생... 모지 하며 내용을 보니 해당 테이블은 delete를 지원하지 않는다. 이에 대한 부분을 체크 하다보니 Databricks에서는 델타(관리)테이블, 외부테이블(관리되지않는 테이블) 이란 체계로 구성되며, 위에서 만든 테이블 같은 경우는 외부테이블 이어서 Delete를 할 수 없다는 오류였다. 이를 알기위해서는 먼저 두가지 테이블이 어떤 개념인지 알아본다.
델타(관리)테이블 (Delta Table)
- 일단 Delta Lake, Delta Lake Table, Delta Table, 관리테이블등 아마도 동일한 내용을 말하고 있지만 혼재되어 사용 되고 있는듯 하지만 내가 내린 결론은 일반적인 DB기준으로 생각하자면 -> 테이블(TABLE)이다. 좀 더 자세히 알고자 한다면 다른 참고 사이트를 상세히 확인해 보길 바란다.
#참조 : Delta Lake란? - Azure Databricks | Microsoft Learn
외부테이블 (관리되지않는 테이블)
- MS Docs에서는 외부 테이블은 LOCATION 절을 사용하여 외부 스토리지 경로를 참조하는 테이블입니다. 라고, 표기하고 있다. 말 그대로 테이블이지만 그 안에 데이터는 외부와 연결된다는 소리다. 연결했던 소스가 변경/삭제시 영향을 받습니다. USING data_source 테이블에 사용할 파일 형식입니다. data_source는 다음 중 하나여야 합니다.
TEXT
AVRO
CSV
JSON
PARQUET
ORC
DELTA
USING을 생략하면 기본값은 DELTA입니다. ※ DELTA로 하지 않는 그외 모든 테이블은 외부테이블 입니다.
> 정리 하자면 데이터 자체를 DataBricks에서 관리하는 테이블. DataBricks에서는 테이블만 관리하고 데이터는 외부에 존재하는 테이블로 나눌 수 있을것 같다. 그럼 두가지는 어떻게 구별하지???
위 그림에서 보면 테이블명을 보고는 델타테이블? 외부테이블? 이 구분이 안된다. 확인하는 방법은 해당 테이블을 클릭하여, 조회되는 내용에 따라 확인 할 수 있다. 좀 더 테이블 리스트에 표기가 있었으면, 좋을텐데, 내가 모르는 걸 수도 있지만 일단 확인된 방법은 아래와 같다. [ 외부테이블 (EXTERNAL TABLE) ]
[ 델타테이블 ] - Details, History정보 표기됨
<중요> 추가로 확인된 내용중 델타(관리)테이블 이지만 외부테이블 인건이 존재한다!!!
델타테이블(관리되는 테이블 (MANAGED))
: 원천 데이터가 담기는 테이블이라고 보면된다.
델타테이블(관리되지않는테이블 (EXTERNAL))
: 외부테이블과 비슷한 개념이다. 실제 데이터의 원천은 별도의 관리되는 테이블 과 연결되어 있는 개념이다. 실제 원천(MANAGED) 테이블의 정보가 변경되면 영향을 받는다. ★ 단 외부테이블(EXTERNAL TABLE) 과 차이점은.... 외부테이블은 실제로 특정한 외부경로를 바라보고 있기에 DELETE, INSERT등의 명령 자체가 불가하다. 그런데 델타테이블(EXTERNAL)의 경우는 연결 되어 있는곳이 동일 선상의 원천 델타테이블(MANAGED) 이기에 DELTET, INSERT등의 처리가 가능하다. 이 경우! 실제 원천데이터를 변경하는거 이기에 조심히 사용할 필요가 있을꺼로 판단된다.
해당 구문을 실행하여... 스키마를 사용 할 수 있는 권한을 부여해줘야 한다. 분명이 table select등 권한을 부여했음에도 또 저런 구문을 이용하여 줘야 되는지? 의문이 들었다.
이 부분은 기존에 GRANT SELELC ON~ 명령이 스키마안의 테이블에 대한 권한을 부여하는거라면 스키마 자체또한 객체로 보고, 해당 객체(스키마)에도 접속할 수 있는 액세스 권한을 부여하여야 하기에 GRANT USAGE ON SCHEMA 명령을 사용해야 되는걸로 확인되었다.
※ 여러 MS Azure Doc사이트 문서, 인터넷 검색등을 통해서도 저부분까지 표기되어 있는부분이 별로 없었다. 실제 테스트를 기본적으로 제공되는 'public' 스키마를 써서 할텐데 이 경우 아마 디폴트로 'public'스키마는 사용자(role)을 생성시 기본으로 객체 권한이 부여되는듯 하다. 그러므로 해당 명령수행을 놓치걸로 판단된다.