text:
Improved constraints for changing the column type

Is your feature request related to a problem? Please describe.
타입 변경에 따른 제약이 발생하기 시작했습니다.
(유저 생성한 Geo 타입 변경 불가, Date/Time 타입에 대한 유효성)
그러나 현재 Datasource > Column Detail에서 타입을 아무 제약없이 손쉽게 바꿀 수 있습니다.
.
.
Describe the solution you'd like
Datasource > Information에서 타입변경 기능을 삭제하고, Configure Schema에서 Date/Time 타입으로 변경시 유효성 체크를 합니다.
이는 Metadata > Column Schema에서 타입 변경시에도 동일합니다.
.
.
Describe alternatives you've considered

Datasource > Column Detail에서 Type변경 불가

.
.
Datasource > Configure Schema에서 Date/Time 타입으로 변경시 유효성 체크

.
.
Metadata > Configure Schema 또한 Date/Time 타입으로 변경시 유효성 체크

.
.
.
Additional context
관련이슈 : #1397 , #1539 #1245

@deidera08 타입 변경에 대한 제약이 필요하다는 의견에 동의합니다. 내부적으로 확인이 필요하겠네요.
geo type 은 드루이드 엔진에 인덱싱이 되어 있는 부분이라, 변경이되면 안되는데요. 이런 부분은 적재시점에 필드속성으로 변경을 허용하지 않는다는 플래그를 넣어 화면내 편집불가를 표시하면 어떨런지요.
그리고 format 컬럼은 항상 걸리는것 같아요. 현재는 timestamp 만 있는데, 굳이 grid에 format 컬럼을 유지해야하는지 의문입니다.  타입을 변경시 위에 그려두었듯이 레이어를 두어서 처리하는 방안은 어떠실런지요?

@kyungtaak @AnnieHwang
Geo type은 생성 당시(인제스쳔 단계) 삭제/변경 불가하다는 안내문구로 한번 더 보완하도록 하겠습니다.
format컬럼은 현재는 Date/Time밖에 쓰지는 않지만 추후 논리적 타입(우편번호, 전화번호 등)을 염두에 두고 유지시키고 있는데요. 논리타입이 구현이 현재는 우선순위에서 많이 밀리고 있어, 구현되는 시점까지 숨기는 방법도 있을듯 합니다.

@kyungtaak @ninezero90hy @AnnieHwang
현재 Metadata > Configure Schema화면에 검색이 필요합니다.
(작업량이 괜찮으시다면) 본 화면에서 같이 진행해주실수 있으실까요? 적절치 않다면 이슈를 따로 분리하도록 하겠습니다

@kyungtaak @ninezero90hy @AnnieHwang
현재 Metadata > Configure Schema화면에 검색이 필요합니다.
(작업량이 괜찮으시다면) 본 화면에서 같이 진행해주실수 있으실까요? 적절치 않다면 이슈를 따로 분리하도록 하겠습니다

@deidera08 넵 해당 이슈에서 같이 진행하겠습니다

@deidera08 #1245 이슈 댓글 > 4.메타데이터 > 컬럼 스키마 : 가이드문구 영역 추가. 2번화면과 통일성있게 맞춤.
해당 댓글에 있는 디자인으로 메타데이터 컬럼 스키마 필터링 부분 진행하겠습니다

@ninezero90hy
예전 기획서에 따른 디자인이라, 현재 Datasource>Grid나 Datasource>Configure Schema화면의 검색과 동일하게 부탁드리겠습니다.

@kyungtaak  메타데이터 > 컬럼 스키마 검색 기능을 추가하고 있는데 메타데이터 상세정보에 롤 정보가 없습니다
확인 부탁드립니다 :)

메타데이터 상세조회 API - [GET] /api/metadatas/{id}/columns?projection=forListView
[{
	"name": "fd_permission",
	"id": "22",
	"type": "STRING",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "fd_permission"
}, {
	"name": "id",
	"id": "23",
	"type": "STRING",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "id"
}, {
	"name": "current_datetime",
	"id": "24",
	"type": "TIMESTAMP",
	"popularity": 0.0,
	"physicalType": "TIMESTAMP",
	"physicalName": "current_datetime"
}]

@AnnieHwang @brandon-wonjune @ninezero90hy @koeun222

포맷 작성 레이어에서 (입력한 값의 유효여부와 상관없이) Save/Cancel 버튼이 의미가 없어 삭제하고 Close 버튼으로 대체하도록 하겠습니다.
포맷에 값을 입력시 해당 값을 기억하고 부모팝업의 input에도 동일값이 노출됩니다. (레이어를 닫았다가 다시 호출시에도 해당값 노출됨)
다만 해당 값 유효성 여부를 체크하지 않았거나 유효하지 않은 경우 경고 아이콘을 노출시키고
부모 팝업의 내용을 저장할 수 없습니다.

@AnnieHwang 디자인 공유드립니다

Datasource > Column Detail에서 Type변경 불가 : 퍼블에서 해당내용 제거 부탁드립니다-

Datasource > Configure Schema에서 Date/Time 타입으로 변경시 유효성 체크

Metadata > Configure Schema 또한 Date/Time 타입으로 변경시 유효성 체크

@AnnieHwang 디자인 공유드립니다

Datasource > Column Detail에서 Type변경 불가 : 퍼블에서 해당내용 제거 부탁드립니다-
Datasource > Configure Schema에서 Date/Time 타입으로 변경시 유효성 체크

Metadata > Column Schema 또한 Date/Time 타입으로 변경시 유효성 체크

@kyungtaak 메타데이터 > 컬럼 스키마의 포맷 부분이 변경되었는데 확인 부탁드립니다

@kyungtaak 메타데이터 > 컬럼 스키마 필터링 기능을 추가하고 있는데 메타데이터 컬럼정보에 필터링 할 때 필요한 롤(역할) 정보가 없습니다
확인 부탁드립니다 :)

메타데이터 컬럼조회 API - [GET] /api/metadatas/{id}/columns?projection=forListView
[{
	"name": "fd_permission",
	"id": "22",
	"type": "STRING",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "fd_permission"
}, {
	"name": "id",
	"id": "23",
	"type": "STRING",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "id"
}, {
	"name": "current_datetime",
	"id": "24",
	"type": "TIMESTAMP",
	"popularity": 0.0,
	"physicalType": "TIMESTAMP",
	"physicalName": "current_datetime"
}]

@kyungtaak 위 문의 내용 확인 부탁드립니다 :)

@ninezero90hy @brandon-wonjune
metadata column 에 role 속성을 추가했습니다. 그리고, WKT 유효성 체크는 아래와 같습니다

Request Sample
(POST) /api/datasources/validation/wkt

{
    "geoType": "GEO_LINE",
    "values": [
        "LINESTRING (127.007656 37.491764, 127.027648 37.497879)",
        "LINESTRING (127.027648 37.497879, 127.066436 37.509842)"
    ]
}

Respons Sample

- Valid 인경우
{
    "valid": true,
    "suggestType": "GEO_LINE",
    "message": "ERROR_NOT_MATCHED_WKT_TYPE"
}

- Invalid 인경우
(geoType 을 GEO_POINT 로 전달한 경우)
{
    "valid": false,
    "suggestType": "GEO_LINE",
    "message": "ERROR_NOT_MATCHED_WKT_TYPE"
}

(WKT value 가 아닌 경우)
{
    "valid": false,
    "suggestType": null,
    "message": "ERROR_PARSE_WKT"
}

(적재에 지원되지 않는 WKT 타입인 경우)
{
    "valid": false,
    "suggestType": null,
    "message": "ERROR_NOT_SUPPORT_WKT_TYPE"
}

@kyungtaak @AnnieHwang @brandon-wonjune @ninezero90hy

format 컬럼은 항상 걸리는것 같아요. 현재는 timestamp 만 있는데, 굳이 grid에 format 컬럼을 유지해야하는지 의문입니다.

UI가 개선되었습니다. Configure schema화면에서 Format영역이 삭제되고 정보 버튼으로 대체되었습니다.

Datasource > Configure schema

.
.
Metadata > Configure schema

.
.

@AnnieHwang 재수정한 안 공유드립니다

Format영역 삭제, 세팅버튼 ->정보버튼으로 수정
"close" 버튼 -> "X"로 수정

1.Datasource > Configure schema

2.Metadata > Column schema

@kyungtaak 메타데이터 컬럼조회시 포맷 필드가 없습니다. 확인 부탁드립니다 :)

메타데이터 컬럼조회 - [GET] /api/metadatas/{id}/columns?projection=forListView

[{
	"name": "id",
	"id": "42",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "id"
}, {
	"name": "created_by",
	"id": "43",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "created_by"
}, {
	"name": "created_time",
	"id": "44",
	"type": "TIMESTAMP",
	"role": "TIMESTAMP",
	"popularity": 0.0,
	"physicalType": "TIMESTAMP",
	"physicalName": "created_time"
}, {
	"name": "modified_by",
	"id": "45",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "modified_by"
}, {
	"name": "modified_time",
	"id": "46",
	"type": "TIMESTAMP",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "TIMESTAMP",
	"physicalName": "modified_time"
}, {
	"name": "version",
	"id": "47",
	"type": "INTEGER",
	"role": "MEASURE",
	"popularity": 0.0,
	"physicalType": "LONG",
	"physicalName": "version"
}, {
	"name": "ds_conn_type",
	"id": "48",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_conn_type"
}, {
	"name": "datasource_contexts",
	"id": "49",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "datasource_contexts"
}, {
	"name": "ds_desc",
	"id": "50",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_desc"
}, {
	"name": "ds_type",
	"id": "51",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_type"
}, {
	"name": "ds_engine_name",
	"id": "52",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_engine_name"
}, {
	"name": "ds_fail_on_engine",
	"id": "53",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_fail_on_engine"
}, {
	"name": "ds_fields_matched",
	"id": "54",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_fields_matched"
}, {
	"name": "ds_granularity",
	"id": "55",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_granularity"
}, {
	"name": "ds_include_geo",
	"id": "56",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_include_geo"
}, {
	"name": "ingestion_conf",
	"id": "57",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ingestion_conf"
}, {
	"name": "ds_linked_workspaces",
	"id": "58",
	"type": "INTEGER",
	"role": "MEASURE",
	"popularity": 0.0,
	"physicalType": "INTEGER",
	"physicalName": "ds_linked_workspaces"
}, {
	"name": "ds_name",
	"id": "59",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_name"
}, {
	"name": "ds_owner_id",
	"id": "60",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_owner_id"
}, {
	"name": "ds_partition_keys",
	"id": "61",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_partition_keys"
}, {
	"name": "ds_partition_separator",
	"id": "62",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_partition_separator"
}, {
	"name": "ds_published",
	"id": "63",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_published"
}, {
	"name": "ds_seg_granularity",
	"id": "64",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_seg_granularity"
}, {
	"name": "ds_src_type",
	"id": "65",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_src_type"
}, {
	"name": "ds_status",
	"id": "66",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_status"
}, {
	"name": "dc_id",
	"id": "67",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "dc_id"
}, {
	"name": "ss_id",
	"id": "68",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ss_id"
}, {
	"name": "smy_id",
	"id": "69",
	"type": "INTEGER",
	"role": "MEASURE",
	"popularity": 0.0,
	"physicalType": "LONG",
	"physicalName": "smy_id"
}]

해당 메타데이터의 데이터소스 정보

{
	...
	"name": "datasource",
	"fields": [{
		"id": 10047066,
		"name": "id",
		"logicalName": "id",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 0
	}, {
		"id": 10047067,
		"name": "created_by",
		"logicalName": "created_by",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 1
	}, {
		"id": 10047068,
		"name": "created_time",
		"logicalName": "created_time",
		"type": "TIMESTAMP",
		"logicalType": "TIMESTAMP",
		"role": "TIMESTAMP",
		"aggrType": "NONE",
		"seq": 2,
		"format": {
			"type": "time_format",
			"format": "yyyy-MM-dd HH:mm:ss.SSSSSS",
			"timeZone": "Asia/Seoul",
			"locale": "en"
		}
	}, {
		"id": 10047069,
		"name": "modified_by",
		"logicalName": "modified_by",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 3
	}, {
		"id": 10047070,
		"name": "modified_time",
		"logicalName": "modified_time",
		"type": "TIMESTAMP",
		"logicalType": "TIMESTAMP",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 4,
		"format": {
			"type": "time_format",
			"format": "yyyy-MM-dd HH:mm:ss.SSSSSS",
			"timeZone": "Asia/Seoul",
			"locale": "en"
		}
	}, {
		"id": 10047071,
		"name": "version",
		"logicalName": "version",
		"type": "LONG",
		"logicalType": "INTEGER",
		"role": "MEASURE",
		"aggrType": "NONE",
		"seq": 5
	}, {
		"id": 10047072,
		"name": "ds_conn_type",
		"logicalName": "ds_conn_type",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 6
	}, {
		"id": 10047073,
		"name": "datasource_contexts",
		"logicalName": "datasource_contexts",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 7
	}, {
		"id": 10047074,
		"name": "ds_desc",
		"logicalName": "ds_desc",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 8
	}, {
		"id": 10047075,
		"name": "ds_type",
		"logicalName": "ds_type",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 9
	}, {
		"id": 10047076,
		"name": "ds_engine_name",
		"logicalName": "ds_engine_name",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 10
	}, {
		"id": 10047077,
		"name": "ds_fail_on_engine",
		"logicalName": "ds_fail_on_engine",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 11
	}, {
		"id": 10047078,
		"name": "ds_fields_matched",
		"logicalName": "ds_fields_matched",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 12
	}, {
		"id": 10047079,
		"name": "ds_granularity",
		"logicalName": "ds_granularity",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 13
	}, {
		"id": 10047080,
		"name": "ds_include_geo",
		"logicalName": "ds_include_geo",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 14
	}, {
		"id": 10047081,
		"name": "ingestion_conf",
		"logicalName": "ingestion_conf",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 15
	}, {
		"id": 10047082,
		"name": "ds_linked_workspaces",
		"logicalName": "ds_linked_workspaces",
		"type": "INTEGER",
		"logicalType": "INTEGER",
		"role": "MEASURE",
		"aggrType": "NONE",
		"seq": 16
	}, {
		"id": 10047083,
		"name": "ds_name",
		"logicalName": "ds_name",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 17
	}, {
		"id": 10047084,
		"name": "ds_owner_id",
		"logicalName": "ds_owner_id",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 18
	}, {
		"id": 10047085,
		"name": "ds_partition_keys",
		"logicalName": "ds_partition_keys",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 19
	}, {
		"id": 10047086,
		"name": "ds_partition_separator",
		"logicalName": "ds_partition_separator",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 20
	}, {
		"id": 10047087,
		"name": "ds_published",
		"logicalName": "ds_published",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 21
	}, {
		"id": 10047088,
		"name": "ds_seg_granularity",
		"logicalName": "ds_seg_granularity",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 22
	}, {
		"id": 10047089,
		"name": "ds_src_type",
		"logicalName": "ds_src_type",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 23
	}, {
		"id": 10047090,
		"name": "ds_status",
		"logicalName": "ds_status",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 24
	}, {
		"id": 10047091,
		"name": "dc_id",
		"logicalName": "dc_id",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 25
	}, {
		"id": 10047092,
		"name": "ss_id",
		"logicalName": "ss_id",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 26
	}, {
		"id": 10047093,
		"name": "smy_id",
		"logicalName": "smy_id",
		"type": "LONG",
		"logicalType": "INTEGER",
		"role": "MEASURE",
		"aggrType": "NONE",
		"seq": 27
	}],
	"id": "9f8d9c91-2067-416c-8571-d84e654ae5b6",
	"engineName": "datasource",
	"description": "",
	"status": "ENABLED",
	"ingestion": {
		"type": "single",
		"connection": {
			"implementor": "MYSQL",
			"type": "JDBC",
			"hostname": "localhost",
			"port": 3306,
			"username": "polaris",
			"password": "polaris",
			"authenticationType": "MANUAL",
			"linkedWorkspaces": 0,
			"connectUrl": "jdbc:mysql://localhost:3306/"
		},
		"database": "polaris",
		"dataType": "TABLE",
		"query": "datasource",
		"rollup": true,
		"intervals": ["2019-03-10T09/2019-03-18T17"],
		"fetchSize": 200,
		"maxLimit": 10000000,
		"scope": "ALL"
	},
	"contexts": {},
	"dsType": "MASTER",
	...
}

@ninezero90hy @brandon-wonjune
metadata column 에 role 속성을 추가했습니다. 그리고, WKT 유효성 체크는 아래와 같습니다

Request Sample
(POST) /api/datasources/validation/wkt

{
    "geoType": "GEO_LINE",
    "values": [
        "LINESTRING (127.007656 37.491764, 127.027648 37.497879)",
        "LINESTRING (127.027648 37.497879, 127.066436 37.509842)"
    ]
}

Respons Sample

- Valid 인경우
{
    "valid": true,
    "suggestType": "GEO_LINE",
    "message": "ERROR_NOT_MATCHED_WKT_TYPE"
}

- Invalid 인경우
(geoType 을 GEO_POINT 로 전달한 경우)
{
    "valid": false,
    "suggestType": "GEO_LINE",
    "message": "ERROR_NOT_MATCHED_WKT_TYPE"
}

(WKT value 가 아닌 경우)
{
    "valid": false,
    "suggestType": null,
    "message": "ERROR_PARSE_WKT"
}

(적재에 지원되지 않는 WKT 타입인 경우)
{
    "valid": false,
    "suggestType": null,
    "message": "ERROR_NOT_SUPPORT_WKT_TYPE"
}

@kyungtaak 메타데이터에서도 동일한 API(WKT 유효성 체크)를 사용하면 되나요?

@kyungtaak LINESTRING에는 GEO_POINT타입으로 변경할때 어떤 값으로 들어가야되나요?
timeformat validation 처럼 실데이터 value array만 넣으니 ERROR_PARSE_WKT가 뜹니다.

@ninezero90hy @brandon-wonjune
metadata column 에 role 속성을 추가했습니다. 그리고, WKT 유효성 체크는 아래와 같습니다

Request Sample
(POST) /api/datasources/validation/wkt

{
    "geoType": "GEO_LINE",
    "values": [
        "LINESTRING (127.007656 37.491764, 127.027648 37.497879)",
        "LINESTRING (127.027648 37.497879, 127.066436 37.509842)"
    ]
}

Respons Sample

- Valid 인경우
{
    "valid": true,
    "suggestType": "GEO_LINE",
    "message": "ERROR_NOT_MATCHED_WKT_TYPE"
}

- Invalid 인경우
(geoType 을 GEO_POINT 로 전달한 경우)
{
    "valid": false,
    "suggestType": "GEO_LINE",
    "message": "ERROR_NOT_MATCHED_WKT_TYPE"
}

(WKT value 가 아닌 경우)
{
    "valid": false,
    "suggestType": null,
    "message": "ERROR_PARSE_WKT"
}

(적재에 지원되지 않는 WKT 타입인 경우)
{
    "valid": false,
    "suggestType": null,
    "message": "ERROR_NOT_SUPPORT_WKT_TYPE"
}

@kyungtaak 메타데이터에서도 동일한 API(WKT 유효성 체크)를 사용하면 되나요?

@ninezero90hy 넵

@kyungtaak
그러면 메타데이터도 아래와 같은 field data 상세조회용 api를 같이 사용하면 될까요?
// 데이터소스 일때 (엔진형만 사용)
api/datasources/query/search (POST)
// param
{
limits: 조회할 데이터 수
name: 데이터소스 engineName
connType: 데이터소스 connType
type: 'default'
}

// 커넥션이거나 데이터소스가 연결형일 경우
api/connections/query/data?extractColumnName=false (POST)
// param
connection: {
        hostname: hostname,
        port: port number,
        implementor: db type
        authenticationType:authentication type,
        username?: authentication type이 USERINFO가 아닌경우에만 추가,
        password?: authentication type이 USERINFO가 아닌경우에만 추가,
        database?: 커넥션 내부에 database를 가지고 있는 경우에만 추가
      },
database: ingestion 의 database name,
type: ingestion의 dataType,
query: ingestion의 query
}

@kyungtaak LINESTRING에는 GEO_POINT타입으로 변경할때 어떤 값으로 들어가야되나요?
timeformat validation 처럼 실데이터 value array만 넣으니 ERROR_PARSE_WKT가 뜹니다.

@ninezero90hy 여기서는 WKT 타입만 지원됩니다. https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry

@kyungtaak
그러면 메타데이터도 아래와 같은 field data 상세조회용 api를 같이 사용하면 될까요?

@brandon-wonjune 넵!

@kyungtaak 메타데이터 컬럼조회시 포맷 필드가 없습니다. 확인 부탁드립니다 :)

메타데이터 컬럼조회 - [GET] /api/metadatas/{id}/columns?projection=forListView

[{
	"name": "id",
	"id": "42",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "id"
}, {
	"name": "created_by",
	"id": "43",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "created_by"
}, {
	"name": "created_time",
	"id": "44",
	"type": "TIMESTAMP",
	"role": "TIMESTAMP",
	"popularity": 0.0,
	"physicalType": "TIMESTAMP",
	"physicalName": "created_time"
}, {
	"name": "modified_by",
	"id": "45",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "modified_by"
}, {
	"name": "modified_time",
	"id": "46",
	"type": "TIMESTAMP",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "TIMESTAMP",
	"physicalName": "modified_time"
}, {
	"name": "version",
	"id": "47",
	"type": "INTEGER",
	"role": "MEASURE",
	"popularity": 0.0,
	"physicalType": "LONG",
	"physicalName": "version"
}, {
	"name": "ds_conn_type",
	"id": "48",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_conn_type"
}, {
	"name": "datasource_contexts",
	"id": "49",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "datasource_contexts"
}, {
	"name": "ds_desc",
	"id": "50",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_desc"
}, {
	"name": "ds_type",
	"id": "51",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_type"
}, {
	"name": "ds_engine_name",
	"id": "52",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_engine_name"
}, {
	"name": "ds_fail_on_engine",
	"id": "53",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_fail_on_engine"
}, {
	"name": "ds_fields_matched",
	"id": "54",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_fields_matched"
}, {
	"name": "ds_granularity",
	"id": "55",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_granularity"
}, {
	"name": "ds_include_geo",
	"id": "56",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_include_geo"
}, {
	"name": "ingestion_conf",
	"id": "57",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ingestion_conf"
}, {
	"name": "ds_linked_workspaces",
	"id": "58",
	"type": "INTEGER",
	"role": "MEASURE",
	"popularity": 0.0,
	"physicalType": "INTEGER",
	"physicalName": "ds_linked_workspaces"
}, {
	"name": "ds_name",
	"id": "59",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_name"
}, {
	"name": "ds_owner_id",
	"id": "60",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_owner_id"
}, {
	"name": "ds_partition_keys",
	"id": "61",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_partition_keys"
}, {
	"name": "ds_partition_separator",
	"id": "62",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_partition_separator"
}, {
	"name": "ds_published",
	"id": "63",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_published"
}, {
	"name": "ds_seg_granularity",
	"id": "64",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_seg_granularity"
}, {
	"name": "ds_src_type",
	"id": "65",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_src_type"
}, {
	"name": "ds_status",
	"id": "66",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_status"
}, {
	"name": "dc_id",
	"id": "67",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "dc_id"
}, {
	"name": "ss_id",
	"id": "68",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ss_id"
}, {
	"name": "smy_id",
	"id": "69",
	"type": "INTEGER",
	"role": "MEASURE",
	"popularity": 0.0,
	"physicalType": "LONG",
	"physicalName": "smy_id"
}]

해당 메타데이터의 데이터소스 정보

{
	...
	"name": "datasource",
	"fields": [{
		"id": 10047066,
		"name": "id",
		"logicalName": "id",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 0
	}, {
		"id": 10047067,
		"name": "created_by",
		"logicalName": "created_by",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 1
	}, {
		"id": 10047068,
		"name": "created_time",
		"logicalName": "created_time",
		"type": "TIMESTAMP",
		"logicalType": "TIMESTAMP",
		"role": "TIMESTAMP",
		"aggrType": "NONE",
		"seq": 2,
		"format": {
			"type": "time_format",
			"format": "yyyy-MM-dd HH:mm:ss.SSSSSS",
			"timeZone": "Asia/Seoul",
			"locale": "en"
		}
	}, {
		"id": 10047069,
		"name": "modified_by",
		"logicalName": "modified_by",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 3
	}, {
		"id": 10047070,
		"name": "modified_time",
		"logicalName": "modified_time",
		"type": "TIMESTAMP",
		"logicalType": "TIMESTAMP",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 4,
		"format": {
			"type": "time_format",
			"format": "yyyy-MM-dd HH:mm:ss.SSSSSS",
			"timeZone": "Asia/Seoul",
			"locale": "en"
		}
	}, {
		"id": 10047071,
		"name": "version",
		"logicalName": "version",
		"type": "LONG",
		"logicalType": "INTEGER",
		"role": "MEASURE",
		"aggrType": "NONE",
		"seq": 5
	}, {
		"id": 10047072,
		"name": "ds_conn_type",
		"logicalName": "ds_conn_type",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 6
	}, {
		"id": 10047073,
		"name": "datasource_contexts",
		"logicalName": "datasource_contexts",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 7
	}, {
		"id": 10047074,
		"name": "ds_desc",
		"logicalName": "ds_desc",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 8
	}, {
		"id": 10047075,
		"name": "ds_type",
		"logicalName": "ds_type",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 9
	}, {
		"id": 10047076,
		"name": "ds_engine_name",
		"logicalName": "ds_engine_name",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 10
	}, {
		"id": 10047077,
		"name": "ds_fail_on_engine",
		"logicalName": "ds_fail_on_engine",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 11
	}, {
		"id": 10047078,
		"name": "ds_fields_matched",
		"logicalName": "ds_fields_matched",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 12
	}, {
		"id": 10047079,
		"name": "ds_granularity",
		"logicalName": "ds_granularity",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 13
	}, {
		"id": 10047080,
		"name": "ds_include_geo",
		"logicalName": "ds_include_geo",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 14
	}, {
		"id": 10047081,
		"name": "ingestion_conf",
		"logicalName": "ingestion_conf",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 15
	}, {
		"id": 10047082,
		"name": "ds_linked_workspaces",
		"logicalName": "ds_linked_workspaces",
		"type": "INTEGER",
		"logicalType": "INTEGER",
		"role": "MEASURE",
		"aggrType": "NONE",
		"seq": 16
	}, {
		"id": 10047083,
		"name": "ds_name",
		"logicalName": "ds_name",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 17
	}, {
		"id": 10047084,
		"name": "ds_owner_id",
		"logicalName": "ds_owner_id",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 18
	}, {
		"id": 10047085,
		"name": "ds_partition_keys",
		"logicalName": "ds_partition_keys",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 19
	}, {
		"id": 10047086,
		"name": "ds_partition_separator",
		"logicalName": "ds_partition_separator",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 20
	}, {
		"id": 10047087,
		"name": "ds_published",
		"logicalName": "ds_published",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 21
	}, {
		"id": 10047088,
		"name": "ds_seg_granularity",
		"logicalName": "ds_seg_granularity",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 22
	}, {
		"id": 10047089,
		"name": "ds_src_type",
		"logicalName": "ds_src_type",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 23
	}, {
		"id": 10047090,
		"name": "ds_status",
		"logicalName": "ds_status",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 24
	}, {
		"id": 10047091,
		"name": "dc_id",
		"logicalName": "dc_id",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 25
	}, {
		"id": 10047092,
		"name": "ss_id",
		"logicalName": "ss_id",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 26
	}, {
		"id": 10047093,
		"name": "smy_id",
		"logicalName": "smy_id",
		"type": "LONG",
		"logicalType": "INTEGER",
		"role": "MEASURE",
		"aggrType": "NONE",
		"seq": 27
	}],
	"id": "9f8d9c91-2067-416c-8571-d84e654ae5b6",
	"engineName": "datasource",
	"description": "",
	"status": "ENABLED",
	"ingestion": {
		"type": "single",
		"connection": {
			"implementor": "MYSQL",
			"type": "JDBC",
			"hostname": "localhost",
			"port": 3306,
			"username": "polaris",
			"password": "polaris",
			"authenticationType": "MANUAL",
			"linkedWorkspaces": 0,
			"connectUrl": "jdbc:mysql://localhost:3306/"
		},
		"database": "polaris",
		"dataType": "TABLE",
		"query": "datasource",
		"rollup": true,
		"intervals": ["2019-03-10T09/2019-03-18T17"],
		"fetchSize": 200,
		"maxLimit": 10000000,
		"scope": "ALL"
	},
	"contexts": {},
	"dsType": "MASTER",
	...
}

메타데이터 > 컬럼 스키마에서 컬럼 타입 변경이 했을 때 응답은 성공으로 오는데 포맷 필드 정보가 없어서 실제 변경되었는지 안되었는지 확인이 어렵습니다. 이 문제는 위에 문의 내용 확인해주시면 바로 테스트 해보겠습니다

컬럼 업데이트 API - [PATCH] /api/metadatas/{id}/columns
[{
	"name": "created_by",
	"id": 43,
	"type": "TIMESTAMP",
	"role": "DIMENSION",
	"popularity": 0,
	"physicalType": "STRING",
	"physicalName": "created_by",
	"format": {
		"type": "time_format",
		"format": "yyyy-MM-dd HH:mm:ss.SSSSSS"
	},
	"op": "replace"
}]

@kyungtaak 확인 부탁드립니다 :)

@kyungtaak 메타데이터에서 필드 데이터를 조회 하기 위해서 커넥션 정보가 필요한데 스테이지 DB 타입으로 만든 경우에 상세 정보를 조회했을 때 커넥션 정보가 없습니다. 확인 부탁드립니다

Hive

{
	"name": "default",
	"id": "dd1475bb-79bf-4f34-a305-36801c6f3055",
	"sourceType": "JDBC",
	"source": {
		"name": "Hive-localhost-10000",
		"id": "cd678489-feec-41c5-90c1-19f246c6d5d3",
		"type": "JDBC",
		"source": {
			"createdBy": "admin",
			"createdTime": "2019-03-19T04:32:35.000Z",
			"modifiedBy": "admin",
			"modifiedTime": "2019-03-19T04:32:35.000Z",
			"id": "0f52945b-03d8-469b-a131-9b9e2ffbd7d5",
			"implementor": "HIVE",
			"name": "Hive-localhost-10000",
			"type": "JDBC",
			"hostname": "localhost",
			"port": 10000,
			"username": "hive",
			"password": "hive",
			"authenticationType": "MANUAL",
			"published": true,
			"linkedWorkspaces": 0,
			"supportSaveAsHiveTable": false,
			"connectUrl": "jdbc:hive2://localhost:10000/default",
			"metastoreURL": "jdbc:mysql://",
			"metastoreDriverName": "com.mysql.jdbc.Driver"
		},
		"createdBy": {
			"type": "user",
			"username": "admin",
			"fullName": "Administrator",
			"email": "admin@metatron.com"
		},
		"createdTime": "2019-03-19T04:32:55.000Z",
		"modifiedBy": {
			"type": "user",
			"username": "admin",
			"fullName": "Administrator",
			"email": "admin@metatron.com"
		},
		"modifiedTime": "2019-03-19T04:32:55.000Z"
	},
	"popularity": 0.0,
	"createdBy": {
		"type": "user",
		"username": "admin",
		"fullName": "Administrator",
		"email": "admin@metatron.com"
	},
	"createdTime": "2019-03-19T04:32:55.000Z",
	"modifiedBy": {
		"type": "user",
		"username": "admin",
		"fullName": "Administrator",
		"email": "admin@metatron.com"
	},
	"modifiedTime": "2019-03-19T04:32:55.000Z",
	"columns": [{
		"physicalType": "INTEGER",
		"physicalName": "userid",
		"name": "userid",
		"type": "INTEGER",
		"role": "MEASURE"
	}, {
		"physicalType": "INTEGER",
		"physicalName": "movieid",
		"name": "movieid",
		"type": "INTEGER",
		"role": "MEASURE"
	}, {
		"physicalType": "INTEGER",
		"physicalName": "rating",
		"name": "rating",
		"type": "INTEGER",
		"role": "MEASURE"
	}, {
		"physicalType": "STRING",
		"physicalName": "tstamp",
		"name": "tstamp",
		"type": "STRING",
		"role": "DIMENSION"
	}],
	"catalogs": [],
	"description": "default",
	"tags": [],
	"_links": {
		"self": {
			"href": "http://local.com:4200/api/metadatas/dd1475bb-79bf-4f34-a305-36801c6f3055"
		},
		"metadata": {
			"href": "http://local.com:4200/api/metadatas/dd1475bb-79bf-4f34-a305-36801c6f3055{?projection}",
			"templated": true
		},
		"catalogs": {
			"href": "http://local.com:4200/api/metadatas/dd1475bb-79bf-4f34-a305-36801c6f3055/catalogs"
		},
		"columns": {
			"href": "http://local.com:4200/api/metadatas/dd1475bb-79bf-4f34-a305-36801c6f3055/columns"
		}
	}
}

StageDB

{
	"name": "@ratings",
	"id": "ca6f4b12-e51b-4693-9761-74abd1ce1048",
	"sourceType": "STAGEDB",
	"source": {
		"name": "Stage DB",
		"id": "6e866793-7a14-4f3a-af59-c4b3ba1a1eb5",
		"type": "STAGEDB",
		"createdBy": {
			"type": "user",
			"username": "admin",
			"fullName": "Administrator",
			"email": "admin@metatron.com"
		},
		"createdTime": "2019-03-15T02:07:23.000Z",
		"modifiedBy": {
			"type": "user",
			"username": "admin",
			"fullName": "Administrator",
			"email": "admin@metatron.com"
		},
		"modifiedTime": "2019-03-15T02:07:23.000Z"
	},
	"popularity": 0.0,
	"createdBy": {
		"type": "user",
		"username": "admin",
		"fullName": "Administrator",
		"email": "admin@metatron.com"
	},
	"createdTime": "2019-03-15T02:07:23.000Z",
	"modifiedBy": {
		"type": "user",
		"username": "admin",
		"fullName": "Administrator",
		"email": "admin@metatron.com"
	},
	"modifiedTime": "2019-03-15T02:07:23.000Z",
	"columns": [{
		"physicalType": "INTEGER",
		"physicalName": "userid",
		"name": "userid",
		"type": "INTEGER",
		"role": "MEASURE"
	}, {
		"physicalType": "INTEGER",
		"physicalName": "movieid",
		"name": "movieid",
		"type": "TIMESTAMP",
		"role": "MEASURE",
		"format": {
			"type": "time_format",
			"format": "yyyy-MM-dd HH:mm:ss",
			"timeZone": "UTC",
			"locale": "en"
		}
	}, {
		"physicalType": "INTEGER",
		"physicalName": "rating",
		"name": "rating",
		"type": "INTEGER",
		"role": "MEASURE"
	}, {
		"physicalType": "STRING",
		"physicalName": "tstamp",
		"name": "tstamp",
		"type": "STRING",
		"role": "DIMENSION"
	}],
	"catalogs": [],
	"description": "",
	"tags": [],
	"_links": {
		"self": {
			"href": "http://local.com:4200/api/metadatas/ca6f4b12-e51b-4693-9761-74abd1ce1048"
		},
		"metadata": {
			"href": "http://local.com:4200/api/metadatas/ca6f4b12-e51b-4693-9761-74abd1ce1048{?projection}",
			"templated": true
		},
		"catalogs": {
			"href": "http://local.com:4200/api/metadatas/ca6f4b12-e51b-4693-9761-74abd1ce1048/catalogs"
		},
		"columns": {
			"href": "http://local.com:4200/api/metadatas/ca6f4b12-e51b-4693-9761-74abd1ce1048/columns"
		}
	}
}

@ninezero90hy @deidera08 stagedb 는 별도로  커넥션 정보를 표기하지 않는것으로 알고 있는데.. 확인 부탁드립니다.

@kyungtaak 알려주신 WKT 유효성 체크 API를 사용하기 위해서는 필드 데이터가 필요합니다 (파라미터로 사용됨)
데이터소스 생성시 자동 생성된 메타데이터는 데이터소스 정보가 있고, 메타데이터를 하이브 타입으로 만든 경우에는 커넥션 정보가 있기 때문에 field data 상세조회용 api를 사용해서 필드 데이터를 얻을수 있기 때문에 문제가 없습니다
그런데 메타데이터를 스테이지 DB 타입으로 만든 경우에는 커넥션 정보가 없기 때문에 field data 상세조회용 api를 사용할 수 없고 해당 데이터가 없기 때문에 WKT 유효성 체크 API를 사용할 수 없습니다
확인 부탁드립니다 :)

@ufoscw 님. 위에 코멘트 확인 부탁드릴게요. 내부적으로 stagedb 인 경우 커넥션이 노출되지 않더라도 데이터 조회가 가능한것으로 알고 있는데요. 확인 부탁드립니다.

@ninezero90hy
stagedb data와 field 정보를 조회할수 있는 API입니다.
api : (POST) /api/connections/query/hive/data?extractColumnName=false
parameter :
{
   "database":"default",    //database명
   "type":"TABLE",             //TABLE, QUERY
   "query":"1tbl"                 //테이블 명
}

response sample:
{
   "fields":[
      {
         "name":"1tbl.itemno",
         "logicalName":"1tbl.itemno",
         "type":"LONG",
         "logicalType":"INTEGER",
         "role":"MEASURE",
         "aggrType":"NONE"
      },
      {
         "name":"1tbl.name",
         "logicalName":"1tbl.name",
         "type":"STRING",
         "logicalType":"STRING",
         "role":"DIMENSION",
         "aggrType":"NONE"
      },
      {
         "name":"1tbl.speed",
         "logicalName":"1tbl.speed",
         "type":"LONG",
         "logicalType":"INTEGER",
         "role":"MEASURE",
         "aggrType":"NONE"
      },
      {
         "name":"1tbl.weight",
         "logicalName":"1tbl.weight",
         "type":"LONG",
         "logicalType":"INTEGER",
         "role":"MEASURE",
         "aggrType":"NONE"
      }
   ],
   "data":[
      {
         "1tbl.itemno":1,
         "1tbl.name":"소나타",
         "1tbl.speed":219,
         "1tbl.weight":700
      },
      {
         "1tbl.itemno":3,
         "1tbl.name":"",
         "1tbl.speed":254,
         "1tbl.weight":800
      }
   ],
   "totalRows":0,
   "partitionFields":[

   ],
   "fileFormat":{
      "type":"orc"
   }
}

@ninezero90hy
stagedb data와 field 정보를 조회할수 있는 API입니다.

@ufoscw 확인 감사합니다 :)

@ninezero90hy
Metadata 상세 조회 API Response에 source.schema, source.table 속성이 추가되었습니다.
StageDB, Hive 2가지 경우 모두 입니다.

StageDB response sample

{
   "name":"stage-lineage",
   "id":"b93258f1-e957-4a61-82d7-df0923dc6c18",
   "sourceType":"STAGEDB",
   "catalogs":[

   ],
   "columns":[
      {
         "physicalType":"LONG",
         "physicalName":"eventtime",
         "name":"eventtime",
         "type":"INTEGER"
      },
      {
         "physicalType":"STRING",
         "physicalName":"cluster",
         "name":"cluster",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"currentdatabase",
         "name":"currentdatabase",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"targettabletype",
         "name":"targettabletype",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"expr",
         "name":"expr",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"jobid",
         "name":"jobid",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"owner",
         "name":"owner",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"predicatestr",
         "name":"predicatestr",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sourcedatabasename",
         "name":"sourcedatabasename",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sourcefieldcomment",
         "name":"sourcefieldcomment",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sourcefieldname",
         "name":"sourcefieldname",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sourcefieldtype",
         "name":"sourcefieldtype",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sourcetablename",
         "name":"sourcetablename",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"targetdatabasename",
         "name":"targetdatabasename",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"targetfieldcomment",
         "name":"targetfieldcomment",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"targetfieldname",
         "name":"targetfieldname",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"targetfieldtype",
         "name":"targetfieldtype",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"targettablename",
         "name":"targettablename",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sql",
         "name":"sql",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sqlfile",
         "name":"sqlfile",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sqlhash",
         "name":"sqlhash",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sqlid",
         "name":"sqlid",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sqltype",
         "name":"sqltype",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"useripaddress",
         "name":"useripaddress",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"workflowid",
         "name":"workflowid",
         "type":"STRING"
      },
      {
         "physicalType":"BOOLEAN",
         "physicalName":"targettabletemporary",
         "name":"targettabletemporary",
         "type":"BOOLEAN"
      },
      {
         "physicalType":"BOOLEAN",
         "physicalName":"pruning",
         "name":"pruning",
         "type":"BOOLEAN"
      },
      {
         "physicalType":"BOOLEAN",
         "physicalName":"predicate",
         "name":"predicate",
         "type":"BOOLEAN"
      }
   ],
   "createdBy":{
      "type":"user",
      "username":"admin",
      "fullName":"Administrator",
      "email":"admin@metatron.com"
   },
   "createdTime":"2019-03-20T05:41:20.277Z",
   "modifiedBy":{
      "type":"user",
      "username":"admin",
      "fullName":"Administrator",
      "email":"admin@metatron.com"
   },
   "modifiedTime":"2019-03-20T05:41:20.277Z",
   "popularity":0.0,
   "description":"",
   "tags":[

   ],
   "source":{
      "name":"Stage DB",
      "id":"24db9b9d-9578-4ad7-a34e-58a05920d0ab",
      "type":"STAGEDB",
      "table":"lineage",
      "createdBy":{
         "type":"user",
         "username":"admin",
         "fullName":"Administrator",
         "email":"admin@metatron.com"
      },
      "createdTime":"2019-03-20T05:41:20.277Z",
      "modifiedBy":{
         "type":"user",
         "username":"admin",
         "fullName":"Administrator",
         "email":"admin@metatron.com"
      },
      "modifiedTime":"2019-03-20T05:41:20.277Z",
      "schema":"default"
   },
   "_links":{
      "self":{
         "href":"http://localhost:8180/api/metadatas/b93258f1-e957-4a61-82d7-df0923dc6c18"
      },
      "metadata":{
         "href":"http://localhost:8180/api/metadatas/b93258f1-e957-4a61-82d7-df0923dc6c18{?projection}",
         "templated":true
      },
      "catalogs":{
         "href":"http://localhost:8180/api/metadatas/b93258f1-e957-4a61-82d7-df0923dc6c18/catalogs"
      },
      "columns":{
         "href":"http://localhost:8180/api/metadatas/b93258f1-e957-4a61-82d7-df0923dc6c18/columns"
      }
   }
}

Hive response sample

{
   "name":"hive-lineage",
   "id":"f1690779-e364-46d0-8778-ead8456e6657",
   "sourceType":"JDBC",
   "catalogs":[

   ],
   "columns":[
      {
         "physicalType":"LONG",
         "physicalName":"eventtime",
         "name":"eventtime",
         "type":"INTEGER"
      },
      {
         "physicalType":"STRING",
         "physicalName":"cluster",
         "name":"cluster",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"currentdatabase",
         "name":"currentdatabase",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"targettabletype",
         "name":"targettabletype",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"expr",
         "name":"expr",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"jobid",
         "name":"jobid",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"owner",
         "name":"owner",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"predicatestr",
         "name":"predicatestr",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sourcedatabasename",
         "name":"sourcedatabasename",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sourcefieldcomment",
         "name":"sourcefieldcomment",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sourcefieldname",
         "name":"sourcefieldname",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sourcefieldtype",
         "name":"sourcefieldtype",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sourcetablename",
         "name":"sourcetablename",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"targetdatabasename",
         "name":"targetdatabasename",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"targetfieldcomment",
         "name":"targetfieldcomment",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"targetfieldname",
         "name":"targetfieldname",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"targetfieldtype",
         "name":"targetfieldtype",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"targettablename",
         "name":"targettablename",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sql",
         "name":"sql",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sqlfile",
         "name":"sqlfile",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sqlhash",
         "name":"sqlhash",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sqlid",
         "name":"sqlid",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"sqltype",
         "name":"sqltype",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"useripaddress",
         "name":"useripaddress",
         "type":"STRING"
      },
      {
         "physicalType":"STRING",
         "physicalName":"workflowid",
         "name":"workflowid",
         "type":"STRING"
      },
      {
         "physicalType":"BOOLEAN",
         "physicalName":"targettabletemporary",
         "name":"targettabletemporary",
         "type":"BOOLEAN"
      },
      {
         "physicalType":"BOOLEAN",
         "physicalName":"pruning",
         "name":"pruning",
         "type":"BOOLEAN"
      },
      {
         "physicalType":"BOOLEAN",
         "physicalName":"predicate",
         "name":"predicate",
         "type":"BOOLEAN"
      }
   ],
   "createdBy":{
      "type":"user",
      "username":"admin",
      "fullName":"Administrator",
      "email":"admin@metatron.com"
   },
   "createdTime":"2019-03-20T05:40:49.762Z",
   "modifiedBy":{
      "type":"user",
      "username":"admin",
      "fullName":"Administrator",
      "email":"admin@metatron.com"
   },
   "modifiedTime":"2019-03-20T05:40:49.762Z",
   "popularity":0.0,
   "description":"",
   "tags":[

   ],
   "source":{
      "name":"Hive-localhost-10000",
      "id":"c7f7a453-4d4e-4ec7-800a-b59c92bfe7bf",
      "type":"JDBC",
      "table":"lineage",
      "createdBy":{
         "type":"user",
         "username":"admin",
         "fullName":"Administrator",
         "email":"admin@metatron.com"
      },
      "createdTime":"2019-03-20T05:40:49.762Z",
      "modifiedBy":{
         "type":"user",
         "username":"admin",
         "fullName":"Administrator",
         "email":"admin@metatron.com"
      },
      "modifiedTime":"2019-03-20T05:40:49.762Z",
      "source":{
         "createdBy":"admin",
         "createdTime":"2019-02-20T05:40:35.073Z",
         "modifiedBy":"admin",
         "modifiedTime":"2019-02-20T05:40:35.073Z",
         "id":"a4e6ded5-c408-4012-83bd-e3518b001777",
         "implementor":"HIVE",
         "name":"Hive-localhost-10000",
         "type":"JDBC",
         "hostname":"localhost",
         "port":10000,
         "username":"hive",
         "password":"hive",
         "authenticationType":"MANUAL",
         "published":false,
         "linkedWorkspaces":1,
         "supportSaveAsHiveTable":false,
         "connectUrl":"jdbc:hive2://localhost:10000/default",
         "metastoreURL":"jdbc:mysql://",
         "metastoreDriverName":"com.mysql.jdbc.Driver"
      },
      "schema":"default"
   },
   "_links":{
      "self":{
         "href":"http://localhost:8180/api/metadatas/f1690779-e364-46d0-8778-ead8456e6657"
      },
      "metadata":{
         "href":"http://localhost:8180/api/metadatas/f1690779-e364-46d0-8778-ead8456e6657{?projection}",
         "templated":true
      },
      "catalogs":{
         "href":"http://localhost:8180/api/metadatas/f1690779-e364-46d0-8778-ead8456e6657/catalogs"
      },
      "columns":{
         "href":"http://localhost:8180/api/metadatas/f1690779-e364-46d0-8778-ead8456e6657/columns"
      }
   }
}

@ninezero90hy
Metadata 상세 조회 API Response에 source.schema, source.table 속성이 추가되었습니다.
StageDB, Hive 2가지 경우 모두 입니다.

StageDB response sample

{
   "name":"stage-lineage",
   "id":"b93258f1-e957-4a61-82d7-df0923dc6c18",
   "sourceType":"STAGEDB",
   "catalogs":[

   ],
   "columns":[
      ...
   ],
   "createdBy":{
      "type":"user",
      "username":"admin",
      "fullName":"Administrator",
      "email":"admin@metatron.com"
   },
   "createdTime":"2019-03-20T05:41:20.277Z",
   "modifiedBy":{
      "type":"user",
      "username":"admin",
      "fullName":"Administrator",
      "email":"admin@metatron.com"
   },
   "modifiedTime":"2019-03-20T05:41:20.277Z",
   "popularity":0.0,
   "description":"",
   "tags":[

   ],
   "source":{
      "name":"Stage DB",
      "id":"24db9b9d-9578-4ad7-a34e-58a05920d0ab",
      "type":"STAGEDB",
      "table":"lineage",
      "createdBy":{
         "type":"user",
         "username":"admin",
         "fullName":"Administrator",
         "email":"admin@metatron.com"
      },
      "createdTime":"2019-03-20T05:41:20.277Z",
      "modifiedBy":{
         "type":"user",
         "username":"admin",
         "fullName":"Administrator",
         "email":"admin@metatron.com"
      },
      "modifiedTime":"2019-03-20T05:41:20.277Z",
      "schema":"default"
   },
   "_links":{
      ...
      }
   }
}

Hive response sample

{
   "name":"hive-lineage",
   "id":"f1690779-e364-46d0-8778-ead8456e6657",
   "sourceType":"JDBC",
   "catalogs":[

   ],
   "columns":[
      ...
   ],
   "createdBy":{
      "type":"user",
      "username":"admin",
      "fullName":"Administrator",
      "email":"admin@metatron.com"
   },
   "createdTime":"2019-03-20T05:40:49.762Z",
   "modifiedBy":{
      "type":"user",
      "username":"admin",
      "fullName":"Administrator",
      "email":"admin@metatron.com"
   },
   "modifiedTime":"2019-03-20T05:40:49.762Z",
   "popularity":0.0,
   "description":"",
   "tags":[

   ],
   "source":{
      "name":"Hive-localhost-10000",
      "id":"c7f7a453-4d4e-4ec7-800a-b59c92bfe7bf",
      "type":"JDBC",
      "table":"lineage",
      "createdBy":{
         "type":"user",
         "username":"admin",
         "fullName":"Administrator",
         "email":"admin@metatron.com"
      },
      "createdTime":"2019-03-20T05:40:49.762Z",
      "modifiedBy":{
         "type":"user",
         "username":"admin",
         "fullName":"Administrator",
         "email":"admin@metatron.com"
      },
      "modifiedTime":"2019-03-20T05:40:49.762Z",
      "source":{
         "createdBy":"admin",
         "createdTime":"2019-02-20T05:40:35.073Z",
         "modifiedBy":"admin",
         "modifiedTime":"2019-02-20T05:40:35.073Z",
         "id":"a4e6ded5-c408-4012-83bd-e3518b001777",
         "implementor":"HIVE",
         "name":"Hive-localhost-10000",
         "type":"JDBC",
         "hostname":"localhost",
         "port":10000,
         "username":"hive",
         "password":"hive",
         "authenticationType":"MANUAL",
         "published":false,
         "linkedWorkspaces":1,
         "supportSaveAsHiveTable":false,
         "connectUrl":"jdbc:hive2://localhost:10000/default",
         "metastoreURL":"jdbc:mysql://",
         "metastoreDriverName":"com.mysql.jdbc.Driver"
      },
      "schema":"default"
   },
   "_links":{
     ...
   }
}

@ufoscw 감사합니다. #1540 이슈와 #1625 이슈를 분리하기로 해서 해당 커밋은 #1625 이슈 브랜치로 cherry-pick 해서 진행하겠습니다 :)

@eltriny 해당이슈는 3.3 milestone 으로 이동합니다.

@kyungtaak 타임존 관련해서 한가지 문의사항이 있습니다.
타임스탬프 타입인 컬럼인 경우에
포맷의 타입이 TIME이고 해당 포맷이 시간,분,초에 해당하는 경우 타임존 을 설정할수 있습니다.
(그러면 해당 포맷은 type, format, locale, timzone 속성을 가짐)
만약 시간,분,초에 해당하지 않는 경우 타임존이 DISABLE_ZONE로 되게 됩니다.
(그러면 해당 포맷은

포맷의 type이 time_format이고 format이 시간,분,초에 해당하는경우

{
type: "time_format"
format: "yyyy-MM-dd HH:mm:ss"
locale: "en"
timeZone: "Asia/Seoul"
}

포맷의 type이 time_format이고 format이 시간,분,초에 해당하지 않는경우

{
type: "time_format"
format: "yyyy.MM.dd"
timeZone: "DISABLE_ZONE"
}

포맷의 type이 time_unix인 경우

{
type: "time_unix"
unit: "millisecond"
}

타임스탬프를 current로 생성하는경우

{
type: "time_temporary"
format: "yyyy-MM-dd HH:mm:ss"
}

현재는 3번 4번에 해당하는 케이스에 timezone 속성자체가 없는데요.
위가 맞나요? 아니면 3번 4번 해당케이스도 timeZone: "DISABLE_ZONE"를 넣어줘야되나요?

@kyungtaak 타임존 관련해서 한가지 문의사항이 있습니다.
현재 데이터소스생성시 사용되는것은

포맷의 type이 time_format이고 format이 시간,분,초에 해당하는경우

{
type: "time_format"
format: "yyyy-MM-dd HH:mm:ss"
locale: "en"
timeZone: "Asia/Seoul"
}

포맷의 type이 time_format이고 format이 시간,분,초에 해당하지 않는경우

{
type: "time_format"
format: "yyyy.MM.dd"
timeZone: "DISABLE_ZONE"
}

포맷의 type이 time_unix인 경우

{
type: "time_unix"
unit: "millisecond"
}

타임스탬프를 current로 생성하는경우

{
type: "time_temporary"
format: "yyyy-MM-dd HH:mm:ss"
}

현재는 3번 4번에 해당하는 케이스에 timezone 속성자체가 없는데요.
위가 맞나요? 아니면 3번 4번 해당케이스도 timeZone: "DISABLE_ZONE"를 넣어줘야되나요?

@kyungtaak 위 내용 확인부탁드립니다.

@eltriny @brandon-wonjune 아니면 3번 4번 해당케이스도 timeZone: "DISABLE_ZONE"를 넣어주세요.

@kyungtaak 메타데이터 컬럼 목록 조회시 포맷 필드가 내려오지 않습니다. 확인 부탁드립니다 :)

메타데이터 컬럼 목록 조회 - [GET] /api/metadatas/{id}/columns?projection=forListView

[{
	"name": "id",
	"id": "42",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "id"
}, {
	"name": "created_by",
	"id": "43",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "created_by"
}, {
	"name": "created_time",
	"id": "44",
	"type": "TIMESTAMP",
	"role": "TIMESTAMP",
	"popularity": 0.0,
	"physicalType": "TIMESTAMP",
	"physicalName": "created_time"
}, {
	"name": "modified_by",
	"id": "45",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "modified_by"
}, {
	"name": "modified_time",
	"id": "46",
	"type": "TIMESTAMP",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "TIMESTAMP",
	"physicalName": "modified_time"
}, {
	"name": "version",
	"id": "47",
	"type": "INTEGER",
	"role": "MEASURE",
	"popularity": 0.0,
	"physicalType": "LONG",
	"physicalName": "version"
}, {
	"name": "ds_conn_type",
	"id": "48",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_conn_type"
}, {
	"name": "datasource_contexts",
	"id": "49",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "datasource_contexts"
}, {
	"name": "ds_desc",
	"id": "50",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_desc"
}, {
	"name": "ds_type",
	"id": "51",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_type"
}, {
	"name": "ds_engine_name",
	"id": "52",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_engine_name"
}, {
	"name": "ds_fail_on_engine",
	"id": "53",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_fail_on_engine"
}, {
	"name": "ds_fields_matched",
	"id": "54",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_fields_matched"
}, {
	"name": "ds_granularity",
	"id": "55",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_granularity"
}, {
	"name": "ds_include_geo",
	"id": "56",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_include_geo"
}, {
	"name": "ingestion_conf",
	"id": "57",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ingestion_conf"
}, {
	"name": "ds_linked_workspaces",
	"id": "58",
	"type": "INTEGER",
	"role": "MEASURE",
	"popularity": 0.0,
	"physicalType": "INTEGER",
	"physicalName": "ds_linked_workspaces"
}, {
	"name": "ds_name",
	"id": "59",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_name"
}, {
	"name": "ds_owner_id",
	"id": "60",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_owner_id"
}, {
	"name": "ds_partition_keys",
	"id": "61",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_partition_keys"
}, {
	"name": "ds_partition_separator",
	"id": "62",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_partition_separator"
}, {
	"name": "ds_published",
	"id": "63",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_published"
}, {
	"name": "ds_seg_granularity",
	"id": "64",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_seg_granularity"
}, {
	"name": "ds_src_type",
	"id": "65",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_src_type"
}, {
	"name": "ds_status",
	"id": "66",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ds_status"
}, {
	"name": "dc_id",
	"id": "67",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "dc_id"
}, {
	"name": "ss_id",
	"id": "68",
	"type": "STRING",
	"role": "DIMENSION",
	"popularity": 0.0,
	"physicalType": "STRING",
	"physicalName": "ss_id"
}, {
	"name": "smy_id",
	"id": "69",
	"type": "INTEGER",
	"role": "MEASURE",
	"popularity": 0.0,
	"physicalType": "LONG",
	"physicalName": "smy_id"
}]

해당 메타데이터의 데이터소스 정보

{
	...
	"name": "datasource",
	"fields": [{
		"id": 10047066,
		"name": "id",
		"logicalName": "id",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 0
	}, {
		"id": 10047067,
		"name": "created_by",
		"logicalName": "created_by",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 1
	}, {
		"id": 10047068,
		"name": "created_time",
		"logicalName": "created_time",
		"type": "TIMESTAMP",
		"logicalType": "TIMESTAMP",
		"role": "TIMESTAMP",
		"aggrType": "NONE",
		"seq": 2,
		"format": {
			"type": "time_format",
			"format": "yyyy-MM-dd HH:mm:ss.SSSSSS",
			"timeZone": "Asia/Seoul",
			"locale": "en"
		}
	}, {
		"id": 10047069,
		"name": "modified_by",
		"logicalName": "modified_by",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 3
	}, {
		"id": 10047070,
		"name": "modified_time",
		"logicalName": "modified_time",
		"type": "TIMESTAMP",
		"logicalType": "TIMESTAMP",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 4,
		"format": {
			"type": "time_format",
			"format": "yyyy-MM-dd HH:mm:ss.SSSSSS",
			"timeZone": "Asia/Seoul",
			"locale": "en"
		}
	}, {
		"id": 10047071,
		"name": "version",
		"logicalName": "version",
		"type": "LONG",
		"logicalType": "INTEGER",
		"role": "MEASURE",
		"aggrType": "NONE",
		"seq": 5
	}, {
		"id": 10047072,
		"name": "ds_conn_type",
		"logicalName": "ds_conn_type",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 6
	}, {
		"id": 10047073,
		"name": "datasource_contexts",
		"logicalName": "datasource_contexts",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 7
	}, {
		"id": 10047074,
		"name": "ds_desc",
		"logicalName": "ds_desc",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 8
	}, {
		"id": 10047075,
		"name": "ds_type",
		"logicalName": "ds_type",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 9
	}, {
		"id": 10047076,
		"name": "ds_engine_name",
		"logicalName": "ds_engine_name",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 10
	}, {
		"id": 10047077,
		"name": "ds_fail_on_engine",
		"logicalName": "ds_fail_on_engine",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 11
	}, {
		"id": 10047078,
		"name": "ds_fields_matched",
		"logicalName": "ds_fields_matched",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 12
	}, {
		"id": 10047079,
		"name": "ds_granularity",
		"logicalName": "ds_granularity",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 13
	}, {
		"id": 10047080,
		"name": "ds_include_geo",
		"logicalName": "ds_include_geo",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 14
	}, {
		"id": 10047081,
		"name": "ingestion_conf",
		"logicalName": "ingestion_conf",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 15
	}, {
		"id": 10047082,
		"name": "ds_linked_workspaces",
		"logicalName": "ds_linked_workspaces",
		"type": "INTEGER",
		"logicalType": "INTEGER",
		"role": "MEASURE",
		"aggrType": "NONE",
		"seq": 16
	}, {
		"id": 10047083,
		"name": "ds_name",
		"logicalName": "ds_name",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 17
	}, {
		"id": 10047084,
		"name": "ds_owner_id",
		"logicalName": "ds_owner_id",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 18
	}, {
		"id": 10047085,
		"name": "ds_partition_keys",
		"logicalName": "ds_partition_keys",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 19
	}, {
		"id": 10047086,
		"name": "ds_partition_separator",
		"logicalName": "ds_partition_separator",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 20
	}, {
		"id": 10047087,
		"name": "ds_published",
		"logicalName": "ds_published",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 21
	}, {
		"id": 10047088,
		"name": "ds_seg_granularity",
		"logicalName": "ds_seg_granularity",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 22
	}, {
		"id": 10047089,
		"name": "ds_src_type",
		"logicalName": "ds_src_type",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 23
	}, {
		"id": 10047090,
		"name": "ds_status",
		"logicalName": "ds_status",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 24
	}, {
		"id": 10047091,
		"name": "dc_id",
		"logicalName": "dc_id",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 25
	}, {
		"id": 10047092,
		"name": "ss_id",
		"logicalName": "ss_id",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 26
	}, {
		"id": 10047093,
		"name": "smy_id",
		"logicalName": "smy_id",
		"type": "LONG",
		"logicalType": "INTEGER",
		"role": "MEASURE",
		"aggrType": "NONE",
		"seq": 27
	}],
	"id": "9f8d9c91-2067-416c-8571-d84e654ae5b6",
	"engineName": "datasource",
	"description": "",
	"status": "ENABLED",
	"ingestion": {
		"type": "single",
		"connection": {
			"implementor": "MYSQL",
			"type": "JDBC",
			"hostname": "localhost",
			"port": 3306,
			"username": "polaris",
			"password": "polaris",
			"authenticationType": "MANUAL",
			"linkedWorkspaces": 0,
			"connectUrl": "jdbc:mysql://localhost:3306/"
		},
		"database": "polaris",
		"dataType": "TABLE",
		"query": "datasource",
		"rollup": true,
		"intervals": ["2019-03-10T09/2019-03-18T17"],
		"fetchSize": 200,
		"maxLimit": 10000000,
		"scope": "ALL"
	},
	"contexts": {},
	"dsType": "MASTER",
	...
}

문의한 API가 사용되는 화면 입니다. ( 메타데이터 > 컬럼 스키마 )

@ufoscw 위 내용 확인 부탁드립니다.

@ninezero90hy
메타데이터 컬럼 목록 조회 - [GET] /api/metadatas/{id}/columns?projection=forListView
에 format 속성 추가되었습니다.
{
      "name":"activity_published_time",
      "id":"66",
      "type":"TIMESTAMP",
      "physicalName":"activity_published_time",
      "role":"DIMENSION",
      "popularity":0.0,
      "physicalType":"STRING",
      "format":{
         "format":"yyyy-MM-dd HH:mm:ss",
         "timeZone":"UTC",
         "locale":"en"
      }
   }

@kyungtaak @ufoscw 확인 부탁드립니다

메타데이터 상세 정보 조회시 source.source.connection 정보가 없습니다.
(데이터소스를 프리셋을 사용해서 생성한 경우)

메타데이터 상세정보 조회 결과

{
	"name": "linked",
	"id": "f89dbb56-c21e-4e26-a3c4-55d62b3d81a3",
	"sourceType": "ENGINE",
	"description": "",
	"catalogs": [],
	"modifiedBy": {
		"type": "user",
		"username": "admin",
		"fullName": "Administrator",
		"email": "admin@metatron.com"
	},
	"modifiedTime": "2019-04-15T06:00:33.000Z",
	"columns": [{
		"physicalType": "INTEGER",
		"physicalName": "userid",
		"name": "ratings.userid",
		"type": "INTEGER",
		"fieldRef": 10047087,
		"role": "MEASURE",
		"seq": 0
	}, {
		"physicalType": "INTEGER",
		"physicalName": "movieid",
		"name": "ratings.movieid",
		"type": "INTEGER",
		"fieldRef": 10047088,
		"role": "MEASURE",
		"seq": 1
	}, {
		"physicalType": "INTEGER",
		"physicalName": "rating",
		"name": "ratings.rating",
		"type": "INTEGER",
		"fieldRef": 10047089,
		"role": "MEASURE",
		"seq": 2
	}, {
		"physicalType": "STRING",
		"physicalName": "tstamp",
		"name": "ratings.tstamp",
		"type": "STRING",
		"fieldRef": 10047090,
		"role": "DIMENSION",
		"seq": 3
	}, {
		"physicalType": "TIMESTAMP",
		"physicalName": "current_datetime",
		"name": "current_datetime",
		"type": "TIMESTAMP",
		"fieldRef": 10047091,
		"role": "TIMESTAMP",
		"seq": 4,
		"format": {
			"type": "time_temporary",
			"format": "yyyy-MM-dd HH:mm:ss"
		}
	}],
	"createdTime": "2019-04-15T06:00:33.000Z",
	"createdBy": {
		"type": "user",
		"username": "admin",
		"fullName": "Administrator",
		"email": "admin@metatron.com"
	},
	"popularity": 0.0,
	"tags": [],
	"source": {
		"name": "linked",
		"id": "e8e34e59-cfee-45d9-99d4-125346150ca3",
		"type": "ENGINE",
		"modifiedBy": {
			"type": "user",
			"username": "admin",
			"fullName": "Administrator",
			"email": "admin@metatron.com"
		},
		"modifiedTime": "2019-04-15T06:00:33.000Z",
		"createdTime": "2019-04-15T06:00:33.000Z",
		"createdBy": {
			"type": "user",
			"username": "admin",
			"fullName": "Administrator",
			"email": "admin@metatron.com"
		},
		"source": {
			"createdBy": "admin",
			"createdTime": "2019-04-15T06:00:32.000Z",
			"modifiedBy": "admin",
			"modifiedTime": "2019-04-15T06:00:33.000Z",
			"id": "535ed1fa-9f2c-4638-9da9-6b0b90defa32",
			"name": "linked",
			"engineName": "linked",
			"ownerId": "admin",
			"description": "",
			"dsType": "MASTER",
			"connType": "ENGINE",
			"srcType": "JDBC",
			"granularity": "MONTH",
			"segGranularity": "MONTH",
			"status": "ENABLED",
			"includeGeo": false,
			"linkedWorkspaces": 1,
			"ingestion": {
				"dataType": "TABLE",
				"type": "single",
				"rollup": true,
				"query": "ratings",
				"database": "default",
				"scope": "ALL"
			},
			"fields": [{
				"id": 10047087,
				"name": "userid",
				"logicalName": "ratings.userid",
				"type": "INTEGER",
				"logicalType": "INTEGER",
				"role": "MEASURE",
				"aggrType": "NONE",
				"seq": 0
			}, {
				"id": 10047088,
				"name": "movieid",
				"logicalName": "ratings.movieid",
				"type": "INTEGER",
				"logicalType": "INTEGER",
				"role": "MEASURE",
				"aggrType": "NONE",
				"seq": 1
			}, {
				"id": 10047089,
				"name": "rating",
				"logicalName": "ratings.rating",
				"type": "INTEGER",
				"logicalType": "INTEGER",
				"role": "MEASURE",
				"aggrType": "NONE",
				"seq": 2
			}, {
				"id": 10047090,
				"name": "tstamp",
				"logicalName": "ratings.tstamp",
				"type": "STRING",
				"logicalType": "STRING",
				"role": "DIMENSION",
				"aggrType": "NONE",
				"seq": 3
			}, {
				"id": 10047091,
				"name": "current_datetime",
				"logicalName": "current_datetime",
				"type": "TIMESTAMP",
				"logicalType": "TIMESTAMP",
				"role": "TIMESTAMP",
				"aggrType": "NONE",
				"seq": 4,
				"derived": true,
				"format": {
					"type": "time_temporary",
					"format": "yyyy-MM-dd HH:mm:ss"
				}
			}],
			"summary": {
				"ingestionMinTime": "2014-04-15T06:01:28.000Z",
				"ingestionMaxTime": "2019-04-15T06:01:28.000Z",
				"size": 24282747,
				"count": 458455,
				"ingestedCount": 1000209,
				"columns": {
					"__time": {
						"type": "long",
						"cardinality": -1
					},
					"count": {
						"type": "long",
						"cardinality": -1
					},
					"movieid": {
						"type": "double",
						"cardinality": -1
					},
					"rating": {
						"type": "double",
						"cardinality": -1
					},
					"tstamp": {
						"type": "dimension.string",
						"cardinality": 458455
					},
					"userid": {
						"type": "double",
						"cardinality": -1
					}
				}
			},
			"alias": "linked",
			"dataSourceType": "MASTER"
		}
	},
	"_links": {
		"self": {
			"href": "http://local.com:4200/api/metadatas/f89dbb56-c21e-4e26-a3c4-55d62b3d81a3"
		},
		"metadata": {
			"href": "http://local.com:4200/api/metadatas/f89dbb56-c21e-4e26-a3c4-55d62b3d81a3{?projection}",
			"templated": true
		},
		"columns": {
			"href": "http://local.com:4200/api/metadatas/f89dbb56-c21e-4e26-a3c4-55d62b3d81a3/columns"
		},
		"catalogs": {
			"href": "http://local.com:4200/api/metadatas/f89dbb56-c21e-4e26-a3c4-55d62b3d81a3/catalogs"
		}
	}
}

해당 메타데이터의 데이터소스 상세 정보 조회 결과

{
	"name": "linked",
	"fields": [{
		"id": 10047087,
		"name": "userid",
		"logicalName": "ratings.userid",
		"type": "INTEGER",
		"logicalType": "INTEGER",
		"role": "MEASURE",
		"aggrType": "NONE",
		"seq": 0
	}, {
		"id": 10047088,
		"name": "movieid",
		"logicalName": "ratings.movieid",
		"type": "INTEGER",
		"logicalType": "INTEGER",
		"role": "MEASURE",
		"aggrType": "NONE",
		"seq": 1
	}, {
		"id": 10047089,
		"name": "rating",
		"logicalName": "ratings.rating",
		"type": "INTEGER",
		"logicalType": "INTEGER",
		"role": "MEASURE",
		"aggrType": "NONE",
		"seq": 2
	}, {
		"id": 10047090,
		"name": "tstamp",
		"logicalName": "ratings.tstamp",
		"type": "STRING",
		"logicalType": "STRING",
		"role": "DIMENSION",
		"aggrType": "NONE",
		"seq": 3
	}, {
		"id": 10047091,
		"name": "current_datetime",
		"logicalName": "current_datetime",
		"type": "TIMESTAMP",
		"logicalType": "TIMESTAMP",
		"role": "TIMESTAMP",
		"aggrType": "NONE",
		"seq": 4,
		"derived": true,
		"format": {
			"type": "time_temporary",
			"format": "yyyy-MM-dd HH:mm:ss"
		}
	}],
	"id": "535ed1fa-9f2c-4638-9da9-6b0b90defa32",
	"srcType": "JDBC",
	"description": "",
	"status": "ENABLED",
	"modifiedBy": {
		"type": "user",
		"username": "admin",
		"fullName": "Administrator",
		"email": "admin@metatron.com"
	},
	"modifiedTime": "2019-04-15T06:00:33.000Z",
	"dsType": "MASTER",
	"createdTime": "2019-04-15T06:00:32.000Z",
	"linkedWorkspaces": 1,
	"contexts": {},
	"createdBy": {
		"type": "user",
		"username": "admin",
		"fullName": "Administrator",
		"email": "admin@metatron.com"
	},
	"connType": "ENGINE",
	"ingestion": {
		"type": "single",
		"database": "default",
		"dataType": "TABLE",
		"query": "ratings",
		"rollup": true,
		"fetchSize": 200,
		"maxLimit": 10000000,
		"scope": "ALL"
	},
	"summary": {
		"ingestionMinTime": "2014-04-15T06:01:28.000Z",
		"ingestionMaxTime": "2019-04-15T06:01:28.000Z",
		"size": 24282747,
		"count": 458455,
		"ingestedCount": 1000209,
		"columns": {
			"__time": {
				"type": "long",
				"cardinality": -1
			},
			"count": {
				"type": "long",
				"cardinality": -1
			},
			"movieid": {
				"type": "double",
				"cardinality": -1
			},
			"rating": {
				"type": "double",
				"cardinality": -1
			},
			"tstamp": {
				"type": "dimension.string",
				"cardinality": 458455
			},
			"userid": {
				"type": "double",
				"cardinality": -1
			}
		}
	},
	"engineName": "linked",
	"connection": {
		"createdBy": "admin",
		"createdTime": "2019-04-12T06:55:40.000Z",
		"modifiedBy": "admin",
		"modifiedTime": "2019-04-12T06:55:40.000Z",
		"id": "6d7c6b6d-ad3c-4966-96a0-1c477d6db8bd",
		"implementor": "HIVE",
		"name": "Hive-localhost-10000",
		"type": "JDBC",
		"hostname": "localhost",
		"port": 10000,
		"username": "hive",
		"password": "hive",
		"authenticationType": "MANUAL",
		"linkedWorkspaces": 1
	},
	"granularity": "MONTH",
	"segGranularity": "MONTH",
	"_links": {
		"self": {
			"href": "http://local.com:4200/api/datasources/535ed1fa-9f2c-4638-9da9-6b0b90defa32"
		},
		"datasource": {
			"href": "http://local.com:4200/api/datasources/535ed1fa-9f2c-4638-9da9-6b0b90defa32{?projection}",
			"templated": true
		},
		"workspaces": {
			"href": "http://local.com:4200/api/datasources/535ed1fa-9f2c-4638-9da9-6b0b90defa32/workspaces"
		},
		"connection": {
			"href": "http://local.com:4200/api/datasources/535ed1fa-9f2c-4638-9da9-6b0b90defa32/connection"
		},
		"dashBoards": {
			"href": "http://local.com:4200/api/datasources/535ed1fa-9f2c-4638-9da9-6b0b90defa32/dashboards"
		},
		"snapshot": {
			"href": "http://local.com:4200/api/datasources/535ed1fa-9f2c-4638-9da9-6b0b90defa32/snapshot"
		}
	}
}

@kyungtaak @ufoscw 확인 부탁드립니다

컬럼 수정후에 컬럼 목록을 조회해보면  포맷 > 타입 필드가 없습니다

[PATCH] /api/metadatas/{metadataId}/columns

[GET] /api/metadatas/{metadataId}/columns?projection=forListView

@ninezero90hy

메타데이터 상세 정보 조회시 datasource의 connection 정보가 필요한 경우가 어떤 케이스인가요?
메타데이터 API에 DataSource의 모든 정보를 보내줄 수는 없습니다.
추가적인 datasource 정보가 필요할 경우 datasource 상세보기 API를 사용하시기 바랍니다.

컬럼의 타입 필드는 확인 후 다시 알려드릴게요.

@ninezero90hy
column의 필드 타입 파라미터 누락 수정되었습니다.

@ninezero90hy

메타데이터 상세 정보 조회시 datasource의 connection 정보가 필요한 경우가 어떤 케이스인가요?
메타데이터 API에 DataSource의 모든 정보를 보내줄 수는 없습니다.
추가적인 datasource 정보가 필요할 경우 datasource 상세보기 API를 사용하시기 바랍니다.

메타데이터 상세 정보 조회시 데이터소스의 연결정보가 필요한 경우는 프리셋을 사용해서 데이터소스를 생성한
경우입니다.
프리셋을 사용하지 않고 직접 연결정보를 입력한 경우 메타데이터 상세> 데이터소스에 연결정보가 들어있습니다.
2가지(연결정보 직접입력 / 프리셋 이용) 경우 모두 메타데이터 상세> 데이터소스 연결정보가 없다면 데이터소스의 상세정보 API를 이용하면 될거 같은데요. 지금은 프리셋 이용 했을때 연결정보가 누락된거 같은 느낌입니다.
@ufoscw 확인 부탁드립니다
--
1. 연결정보를 직접 입력해서 데이터소스를 생성한 경우

데이터소스 상세 > 연결정보(ingestion.connection) (전체)
"ingestion": {
	"type": "link",
	"connection": {
	"implementor": "HIVE",
		"type": "JDBC",
		"hostname": "localhost",
		"port": 10000,
		"username": "hive",
		"password": "hive",
		"authenticationType": "MANUAL",
		"linkedWorkspaces": 0
	},
	"database": "default",
	"dataType": "TABLE",
	"query": "ratings",
	"rollup": true,
	"fetchSize": 200,
	"maxLimit": 10000000,
	"expired": 1800
},

메타데이터 상세 > 데이터 소스 > 연결정보(source.source.ingestion.connection) (전체)
"ingestion": {
	"dataType": "TABLE",
	"type": "link",
	"rollup": true,
	"query": "ratings",
	"database": "default",
	"expired": 1800,
	"scope": "ALL",
	"connection": {
		"implementor": "HIVE",
		"hostname": "localhost",
		"port": "10000",
		"authenticationType": "MANUAL",
		"username": "hive",
		"password": "hive",
		"type": "JDBC"
	}
},

2. 연결정보(프리셋)을 선택해서 데이터소스를 생성한 경우

데이터소스 상세 > 연결정보(connection) (전체)
"connection": {
	"createdBy": "admin",
	"createdTime": "2019-04-16T07:35:16.000Z",
	"modifiedBy": "admin",
	"modifiedTime": "2019-04-16T07:35:16.000Z",
	"id": "ce947509-fa68-4182-8c76-111795b850fb",
	"implementor": "HIVE",
	"name": "Hive-localhost-10000",
	"type": "JDBC",
	"hostname": "localhost",
	"port": 10000,
	"username": "hive",
	"password": "hive",
	"authenticationType": "MANUAL",
	"linkedWorkspaces": 1
},

메타데이터 상세 > 데이터 소스 > 연결정보(source.source.connection) (전체)
연결정보 없음

@kyungtaak @AnnieHwang  @ninezero90hy
메타데이터의 컬럼스키마 화면은 확장성을 염두에 두고 기능이 다단 추가될 예정입니다.
때문에 화면 상단에서 제공하는 기능이 정보 수정시와 충돌이 일어나 일부 단순화 할 필요가 있을듯 합니다.

Save 버튼 상시 활성화
현재 저장가능한 상태에만 활성화 되던 버튼을 상시 활성화 상태로 두고, (데이터소스와 마찬가지로) 클릭시 저장 가능 여부를 체크하도록 합니다.
이미 타입 등을 수정시 즉각 Validation check가 일어나게 됩니다. invalid일경우 타입 또한 수정불가 상태로 변경하게 되는데, 저장버튼의 입장에서는 각각 요소요소마다 저장할 수 있는 여부를 체크하여 활성/비활성 상태로 노출되어야 합니다.
유저가 저장할 수 없는 상태를 편하게 인지하기 위함인데, 편의성에 비해 공수가 많이 든다고 판단되어 데이터소스와 마찬가지 UI로 제공하면 좋을듯합니다.

되돌리기 기능 삭제
부모 영역의 히스토리 기능은 Save단위로 일어나게 됩니다.
현 화면에서 수정 및 Validation check 여부까지 판단해야 하는데, 되돌리기 기능은 저장되기 이전의 모든 task를 기억해야 합니다. 이는 현 화면에서 제공하는 목적기능에 비해 무거운 기능이라 판단됩니다.

데이터소스와의 싱크 안내 문구 상시 노출
현재 이름, 설명, 타입 수정발생시에만 노출되는 문구를 상시 노출하는 것으로 변경시켜주세요
가이드문구는 유저가 닫을 수 있도록 개선예정입니다.(연관이슈: #1656 )

repo: metatron-app/metatron-discovery


text:
F#1493 use json for map array

Description
I've changed the internal structure Array and Map types from Java Objects to JSON strings.
Now, we can create an Array or Map (Object in a common word) types from String type values.
Related Issue : #1493
How Has This Been Tested?

Import & wrangle json_in_column.csv.txt
Click column1's context menu - Alter - Column type - Map
Click column1's context menu - Generate - Unnest
Click "Add" without any argument.
You'll see "A", "B_1" columns generated. (B_1 is because of name duplication)

Need additional checks?
Yes, please.
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] I have read the CONTRIBUTING document.
[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have added tests to cover my changes.

deploy to 6

@joohokim1
Is it not support to use this in the nested json?
I've tested with this file but it fails when nested. 😢

@alchan-lee @ksparknot Because we had to test a non-quoted (or weird-quoted) file, I've configured dataprep.polaris.quoteChar as null. Currently, even the test scenario I wrote above does not work. Sorry for your time. #2835 will solve the quote problem.

deploy to 6

deploy to 6

@ksparknot @kyungtaak @alchan-lee
I've merged https://github.com/metatron-app/metatron-discovery/pull/2836 onto this PR branch.
You can set the quote character like this:

This PR is ready to merge. I'll be appreciate if you could re-check and approve.

@joohokim1 thanks for your effort and support :)

source: gharchive/pull-request

authors: alchan-lee joohokim1 kyungtaak

license_type: permissive

license_source: bigquery


text:
Extracting Dof_TrueDof for a sequence of meshes

Hello everyone,
Suppose I want to extract several Dof_TrueDof matrices from a single ParFiniteElementSpace whose ParMesh is refined several times. How should I do that?
For example,
    FiniteElementCollection * hdivfree_coll = new ND_FECollection(feorder + 1, nDimensions);
    ParFiniteElementSpace * C_space = new ParFiniteElementSpace(pmesh.get(), hdivfree_coll);

    pmesh->UniformRefinement();

    C_space->Update();

    HypreParMatrix * mat1 = C_space->Dof_TrueDof_Matrix();

    pmesh->UniformRefinement();

    C_space->Update();

    HypreParMatrix * mat2 = C_space->Dof_TrueDof_Matrix();

leaves corrupted mat1 after C_space passes the second C_space->Update(). As far as I understand, the reason is the ownership of the dof_truedof data which belongs to the C_space and gets destroyed during the second update.
How exactly should I resolve this? I couldn't figure out the right way to use  C_space->Lose_Dof_TrueDof_Matrix().
Thanks,
Kirill

Hi, Kirill,
I have not tried this but I think the correct way to use Lose_Dof_TrueDof_Matrix() is to call it immediately after both of your calls to Dof_TrueDof_Matrix().
I imagine you already tried this and it failed.  Is this correct?
Best wishes,
Mark

@mlstowell,
I have a failing assertion in the proposed scenario, during the first Lose_Dof_TrueDof_Matrix() because the ownerships flags are wrong
Assertion failed: (diagOwner == -1 && offdOwner == -1 && colMapOwner == -1) is false:
 ... in function: hypre_ParCSRMatrix* mfem::HypreParMatrix::StealData()
 ... at line 781 of file: linalg/hypre.cpp

and calling SetOwnerFlags() before or after didn't help either.

You can use
PetscParMatrix * mat1 = new PetscParMatrix(C_space->Dof_TrueDof_Matrix(),Operator::PETSC_MATAIJ);
this will create a new matrix in PETSc's AIJ format (copying the values). Alternatively, you can also specify Operator::PETSC_MATHYPRE if you then wish to access the underlying PETSc Mat Object and use its HyprePARCSR structure, i.e. something like
hypre_ParCSRMatrix *pcsr;
MatHYPREGetParCSR(*mat1,&pcsr);

@stefanozampini,
Thanks for suggesting a work-around!
I rebuilt MFEM with PETSc and tried to use your suggestion but got undefined reference to 'MatHYPREGetParCSR'. Have you done something additional to make the compiler find the definition of it?
What I tried, is just plugging the three lines
PetscParMatrix * mat;
hypre_ParCSRMatrix *pcsr;
MatHYPREGetParCSR(*mat1,&pcsr);

into examples/petsc/ex1p.cpp inside MFEM and tried to run make ex1p in that directory. Somehow the definition was not found be the compiler.

MatHYPREGetParCSR is a PETSc call that is available only if PETSc has been compiled with support for HYPRE by specifying -- download-hypre or --with-hypre-dir at configure time. Run ./configure —help to see how to configure PETSc.
Also, MatHYPREGetParCSR access the ParCSR of a Mat object of type MATHYPRE, not MATAIJ.
If you don’t need to access the ParCSR, then simply create a PetscParMatrix with Operator::PETSC_MATAIJ.

On Nov 7, 2017, at 11:18 PM, kvoronin notifications@github.com wrote:
@stefanozampini https://github.com/stefanozampini,
Thanks for suggesting a work-around!
I rebuilt MFEM with PETSc and tried to use your suggestion but got undefined reference to 'MatHYPREGetParCSR'. Have you done something additional to make the compiler find the definition of it?
What I tried, is just plugging the three lines
PetscParMatrix * mat;
hypre_ParCSRMatrix *pcsr;
MatHYPREGetParCSR(*mat1,&pcsr);
into examples/petsc/ex1p.cpp inside MFEM and tried to run make ex1p in that directory. Somehow the definition was not found be the compiler.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/mfem/mfem/issues/341#issuecomment-342609056, or mute the thread https://github.com/notifications/unsubscribe-auth/AE4lAYx4KvD_tb1iFYBNGWe29NJYxeWuks5s0LsJgaJpZM4QUFZJ.

@stefanozampini,
Thanks again. Now I managed to get it all compiling! Could you also clarify the following? As MFEM's documentation is saying, PETSC_MATAIJ and PETSC_MATIS are only supported. But if I do PETSC_MATAIJ, I get a null as a result of MatHYPREGetParCSR().
And if I do  PETSC_MATHYPRE instead, then mat1 is somehow interfering with the rest of the routines, e.g.
// and nothing else is ever happening to mat1 after this line
PetscParMatrix * mat1 = new PetscParMatrix(C_space->Dof_TrueDof_Matrix(),Operator::PETSC_MATHYPRE);

HypreParMatrix * Dof_TrueDof = C_space->Dof_TrueDof_Matrix();

leads to a failure in some complicated way (LeftDiagMult and PartMult involved, called for Dof_TrueDof) but without that line which defines mat1, the code works fine.
Thanks,
Kirill

Hi Kirill,
I'll try to answer you original question: you should create copies of the ParMesh as you refine it and keep the coarse-level copies; also, build your coarse ParFiniteElementSpaces based on the copied ParMesh objects and preserve the coarse-level spaces too. On the finest level you do not need to copy the ParMesh that you've been refining.
Hope this helps,
Veselin

You cannot get NULL when calling MatHYPREGetPARCSR on a AIJ matrix. PETSc should error in that case.
Regarding your second question: The call with PETSC_MATHYPRE just uses the hypre_PARCSR data inside a PETSc Mat. So, since object ownership is not very well managed under HYPRE (and I would sadly say that this is true also in MFEM :-( ) everything can happen. You have two options: either use PETSC_MATAIJ in the constructor, or do like Vesely is proposing.

source: gharchive/issue

authors: kvoronin mlstowell stefanozampini v-dobrev

repo: mfem/mfem

license_source: github-api


text:
[WIP] Example 1 with boundary term

Hi, with the latest GPU capabilities, I was wondering if a boundary term such as:
Integral [ (grad phi * normal ) phi] dbdry , could be supported in example 1? I've attached an example.

Supporting PA for this type of integrator (including GPU) will require some addition work in mfem.
In the mean time, this term can be assembled separately from other terms (e.g. domain integrators) in into a sparse matrix and applied on the GPU that way. Since this matrix is small (affects only dofs near the boundary) it should be relatively fast to apply. However, this approach will not work that well if the form needs to be re-assembled often.

Closing/deleting


text:
Add external JS library

Hey guys,
I tried to add an external library to angular2-seed, but I couldn't make it work.
The desired library is https://github.com/callmecavs/jump.js
I followed the Wiki, therefore I added the following lines:
project.config.ts
    this.NPM_DEPENDENCIES = [       ...this.NPM_DEPENDENCIES,       {src: 'jump.js/dist/jump.min.js', inject: 'libs'},
  SYSTEM_BUILDER_CONFIG: any = { ...     packages: { ...       'jump.js': {         main: 'dist/jump.min.js',         defaultExtension: 'js'       }     }   };
After that, I tried to import the library, but it still undefined:
import jump from 'jump.js';
Could someone please tells me that what is the proper way to add an external JS library?
Thanks in advance!

For support requests you can use gitter or take a look at project's the wiki page in order to get more complete idea on how the it works.

authors: kiuka mgechev

repo: mgechev/angular-seed

license: mit