2단계. 데이터 쿼리

이 섹션에서는 JSON 데이터를 쿼리하는 SELECT 문을 탐색합니다.

  1. device_type 을 검색합니다.

    SELECT src:device_type
      FROM raw_source;
    
    Copy

    쿼리에서 반환되는 결과는 다음과 같습니다.

    +-----------------+
    | SRC:DEVICE_TYPE |
    |-----------------|
    | "server"        |
    +-----------------+
    
    Copy

    이 쿼리는 src:device_type 표기법을 사용하여 검색할 열 이름과 JSON 요소 이름을 지정합니다. 이 표기법은 익숙한 SQL table.column 표기법과 유사합니다. Snowflake를 사용하면 Snowflake가 JSON 데이터에 삽입된 스키마 정의에서 동적으로 파생되는 상위 열 내에 하위 열을 지정할 수 있습니다. 자세한 내용은 반정형 데이터 쿼리하기 섹션을 참조하십시오.

    참고

    열 이름은 대/소문자를 구분하지 않지만, JSON 요소 이름은 대/소문자를 구분합니다.

  2. 따옴표 없는 device_type 값을 검색합니다.

    이전의 쿼리는 JSON 데이터 값을 따옴표로 묶어 반환합니다. 데이터를 특정 데이터 타입(이 예제에서는 문자열)으로 캐스팅하여 따옴표를 제거할 수 있습니다.

    또한 이 쿼리는 별칭을 사용하여 열에 이름을 선택적으로 할당합니다.

    SELECT src:device_type::string AS device_type
      FROM raw_source;
    
    Copy

    쿼리에서 반환되는 결과는 다음과 같습니다.

    +-------------+
    | DEVICE_TYPE |
    |-------------|
    | server      |
    +-------------+
    
    Copy
  3. 배열 이벤트 오브젝트 내에 중첩된 반복 f 키를 검색합니다.

    샘플 JSON 데이터는 events 배열을 포함합니다. 배열의 각 이벤트 오브젝트에는 표시된 것과 같은 f 필드가 있습니다.

    {
    "device_type": "server",
    "events": [
      {
        "f": 83,
        ..
      }
      {
        "f": 1000083,
        ..
      }
    ]}
    
    Copy

    이러한 중첩 키를 검색하려면 FLATTEN 함수를 사용할 수 있습니다. 이 함수는 이벤트를 별도의 행으로 평면화합니다.

    SELECT
      value:f::number
      FROM
        raw_source
      , LATERAL FLATTEN( INPUT => SRC:events );
    
    Copy

    쿼리에서 반환되는 결과는 다음과 같습니다.

    +-----------------+
    | VALUE:F::NUMBER |
    |-----------------|
    |              83 |
    |         1000083 |
    +-----------------+
    
    Copy

    value 는 FLATTEN 함수가 반환하는 열 중 하나입니다. 다음 단계에서는 FLATTEN 함수 사용에 대해 더 많은 세부 정보를 제공합니다.

다음 항목: 3단계. 데이터 스큐 데이터