SQLServer 에서 JSON 문서 형 데이터 조회 문제 해결

최근 프로젝트 에서 문제 가 발생 했 습 니 다.보고서 에 JSON 형식 으로 저 장 된 데 이 터 를 어떻게 통계 합 니까?
예 를 들 어 설 문 지 기록 표 가 있어 서 모든 문제 의 답 을 기록한다.그 구 조 는 다음 과 같다.
Id
user
date
Q1_Answer
Q2_Answer
Q3_Answer
행 Id
퀴즈 사용자
문제 풀이 날짜
문제
문제 2 결과
문제 3 결과
[Q1Answer]、[Q2_Answer]、[Q3_Answer]에 기 록 된 데이터 형식 은 JSON 문서 내용 입 니 다.옵션 값 이 고 여러 가지 선택 이 있 을 수 있 기 때문에 다음 과 같이 저 장 됩 니 다.

1 [ 
     {"code":"a", "desc":"Jan."},
     {"code":"b", "desc":"Feb."}
  ]
그 중에서 code 는 옵션 을 표시 하고 desc 는 옵션 의 문자 설명 을 표시 합 니 다.
현재 사용 자 는 PowerBI 로 결과 에 대한 통 계 를 실현 하려 고 한다.다음 과 같은 몇 가지 문제 가 있 습 니 다.
  • Power BI 에서 JSON 데이터 에서 옵션 값 을 직접 읽 을 수 없습니다
  • 4.567917.다 선 이 라면 어떻게 처리 해 야 합 니까?
    분석 에 적합 한 데이터 구 조 는 이렇게 길 어야 한다.
    행 Id
    퀴즈 사용자
    문제 풀이 날짜
    문제 번호
    사용자 옵션
    옵션 문자
    1
    user1
    2021-6-26
    Q1
    A
    Jan.
    2
    user1
    2021-6-26
    Q2
    A
    Mon.
    3
    user1
    2021-6-26
    Q2
    B
    Tue.
    4
    user1
    2021-6-26
    Q3
    A
    Swimming
    6
    user2
    2021-6-26
    Q1
    B
    Feb.
    7
    user2
    2021-6-26
    Q2
    ...
    ...
     상기 Q2 사용자 가 두 개의 옵션 을 채 웠 음 을 주의 하 십시오.자체 설 문 지 설정 은 다 중 선택 을 지원 하 는 것 이다.JSON 문서 구조 로 데 이 터 를 저장 하 는 것 은 주로 수집 과 데이터 접근 을 편리 하 게 하기 위해 서 입 니 다.따라서 수집 한 데이터 가 통계 에 편리 하도록 추가 로 데이터 처 리 를 해 야 한다.
    필 자 는 일부 조 사 를 통 해 UNPIVOT 와 OPENJSON 방법 을 결합 하여 이상 적 인 효 과 를 얻 을 수 있다 는 것 을 발견 했다.구체 적 인 과정 은 다음 과 같다.
    표 준비 및 데이터 초기 화
    
    -- 1 create table
    Create Table T_Questionaire(id int identity(1,1) primary key, username varchar(100), t1 nvarchar(500),t2 nvarchar(500),t3 nvarchar(500), dt datetime)
    
    
    -- 2 init data
    Insert into T_Questionaire( username, t1, t2, t3, dt) 
    values ('John' , '[{"code":"a", "desc":"Monday"}]', '[{"code":"a", "desc":"Jan."}]', '[{"code":"b", "desc":"2021"}]' ,getdate())
     ,     ('Alice' , '[{"code":"b", "desc":"Tuesday"}]', '[{"code":"a", "desc":"Jan."}, {"code":"b", "desc":"Feb."}]', '[{"code":"a", "desc":"2020"},{"code":"b", "desc":"2021"}]' ,getdate())
    데이터 내용:

     변환 보기 만 들 기:
    
    Create   or alter view V_VerticalQuestionaire 
    as
    with pt as (
    select a.username, a.T, a.answers,  a.dt from dbo.T_Questionaire a
    unpivot 
      (  answers for T in (t1,t2,t3  ))
    a)
    select pt.username, pt.dt, pt.T , aw.code, aw.[desc]
    from pt 
      cross apply openjson(answers) WITH (code NVARCHAR(100) '$.code', [desc] NVARCHAR(100) '$.desc') aw
    검색 결 과 는 다음 과 같 습 니 다.

     총괄 적 으로 해결 하 는 사고방식:
    1.먼저 unpivot 로 열 을 바 꾸 어 가로 표 기록 을 세로 표 기록 으로 바 꿉 니 다.
    2 openjson 을 사용 하여 json 데 이 터 를 집합 데이터 로 변환 한 후 cross apply 를 사용 하여 집합 을 전개 합 니 다.
    자,여기 서 SQLServer 의 JSON 문서 형 데이터 에 대한 조회 문제 해결 에 관 한 글 을 소개 합 니 다.더 많은 관련 SQLServer 의 JSON 데이터 조회 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 저 를 많이 응원 해 주세요!

    좋은 웹페이지 즐겨찾기