BigQuery에서 쿼리
이 가이드에서는 일반적인 Manufacturing Data Engine (MDE) 사용 사례에 대해 BigQuery에서 데이터를 쿼리하는 방법을 설명합니다.
클라우드 메타데이터와 레코드 조인
클라우드 메타데이터 구체화가 사용 중지된 경우 다음 SQL 쿼리를 사용하여 메타데이터 instance_id의 metadata-store와 관련 레코드 테이블을 조인하여 클라우드 메타데이터 인스턴스에 액세스할 수 있습니다.
SELECT
dnr.*,
ms.instance
FROM
mde_data.`RECORD_TABLE_NAME` AS dnr
LEFT JOIN
mde_dimension.`metadata-store` AS ms
ON
ms.instance_id = JSON_VALUE(cloud_metadata_ref, "$.BUCKET_NAME.instance_id")
WHERE
DATE(event_timestamp) = 'EVENT_TIMESTAMP'
LIMIT 100
다음을 바꿉니다.
RECORD_TABLE_NAME: 레코드 테이블의 이름입니다.BUCKET_NAME: 클라우드 메타데이터 버킷의 이름입니다.EVENT_TIMESTAMP: 이벤트의 타임스탬프입니다.
쿼리 성능을 개선하고 metadata-store이 버킷 번호로 파티셔닝되므로 다음 SQL 쿼리와 같이 ON 절에서 버킷 번호를 선택적으로 지정할 수 있습니다.
SELECT
dnr.*,
ms.instance
FROM
mde_data.`<RECORD_TABLE_NAME>` AS dnr
LEFT JOIN
mde_dimension.`metadata-store` AS ms
ON
ms.instance_id = JSON_VALUE(cloud_metadata_ref, "$.BUCKET_NAME.instance_id")
AND ms.bucket_number = <BUCKET_NUMBER>
WHERE
DATE(event_timestamp) = 'EVENT_TIMESTAMP'
LIMIT 100
다음을 바꿉니다.
BUCKET_NAME: 클라우드 메타데이터 버킷의 이름입니다.EVENT_TIMESTAMP: 이벤트의 타임스탬프입니다.
클라우드 메타데이터 인스턴스 속성 액세스
항상 JSON 객체를 반환하는 JSON 점 표기법을 사용하거나 JSON_VALUE와 같은 BigQuery JSON 함수 중 하나를 사용하여 문자열이나 기타 데이터 유형을 추출하여 메타데이터 인스턴스 속성에 액세스할 수 있습니다. 아래 예시를 참조하세요.
SELECT
dnr.*,
ms.instance.deviceName -- this returns a double quoted JSON string
JSON_VALUE(ms.instance, '$.deviceName') -- this returns a string
FROM
mde_data.`example-record-tbl` AS dnr
LEFT JOIN
mde_dimension.`metadata-store` AS ms
ON
ms.instance_id = JSON_VALUE(cloud_metadata_ref, "$.bucket.instance_id")
WHERE
DATE(event_timestamp) = '2023-01-01'
LIMIT 100
마찬가지로 클라우드 메타데이터 구체화가 사용 설정된 경우 레코드에서 메타데이터 인스턴스 속성에 직접 액세스할 수 있습니다. 아래 예시를 참조하세요.
SELECT
* (EXCEPT materialized_cloud_metadata),
materialized_cloud_metadata.device.deviceName -- this returns a double quoted JSON string
JSON_VALUE(materialized_cloud_metadata., '$.device.deviceName') -- this returns a string
FROM
mde_data.`example-record-tbl`
WHERE
DATE(event_timestamp) = '2023-01-01'
LIMIT 100
cloud_metadata_ref에 포함된 모든 인스턴스 ID 목록 가져오기
레코드의 cloud_metadata_ref 필드에 포함된 모든 메타데이터 인스턴스 ID의 배열을 가져오려면 다음 단계를 따르세요.
다음 SQL 쿼리를 사용하여 사용자 정의 함수 (UDF)를 만듭니다.
CREATE OR REPLACE FUNCTION `mde_data.get_instance_ids`(input JSON) RETURNS ARRAY<STRING> LANGUAGE js AS R""" return input ? Object.keys(input).map(bucketName => input[bucketName].instance_id).filter(instance_id => instance_id != null) : []; """;쿼리에서 함수를 실행합니다.
SELECT mde_data.get_instance_ids(cloud_metadata_ref) as metadata_instance_ids, *, FROM mde_data.`RECORD_TABLE_NAME` WHERE DATE(event_timestamp) = 'EVENT_TIMESTAMP' LIMIT 100다음을 바꿉니다.
RECORD_TABLE_NAME: 레코드 테이블의 이름입니다.EVENT_TIMESTAMP: 이벤트의 타임스탬프입니다.