Looker Marketplace용 커스텀 블록 개발

이 페이지에서는 Looker Marketplace에 추가하고 다른 Looker 사용자가 액세스할 수 있는 커스텀 블록을 만드는 방법을 설명합니다.

Looker Marketplace에 콘텐츠를 제출할 수 있으려면 Looker Partner Network의 구성원 또는 Looker 고객이어야 합니다.

이미 빌드되어 사용 가능한 Looker 블록에 대한 자세한 내용은 Looker 블록 문서 페이지를 참조하세요. Marketplace에서 설치한 블록 맞춤설정에 대한 자세한 내용은 Looker Marketplace 블록 맞춤설정 문서 페이지를 참조하세요.

Looker Marketplace를 통해 블록을 개발하고 모든 Looker 사용자에게 제공하려면 이 페이지에 설명된 단계를 따르세요.

  1. 데이터 소스를 설정하고 Looker에 연결합니다.
  2. 프로젝트를 만들고 필요한 파일을 추가합니다.
  3. 블록에 대한 액세스를 설정합니다.
  4. Looker 검토를 위해 블록을 제출합니다.

데이터 소스 설정 및 Looker에 연결

블록은 데이터 모델이므로 쉽게 반복 가능한 특정 데이터 세트에 맞게 설계되었을 때 가장 효과적으로 작동합니다. 대부분의 블록 설치 오류는 사용자 데이터 세트가 블록의 스키마, 테이블, 필드 이름과 일치하지 않을 때 발생합니다.

  • Google 애널리틱스 데이터와 같은 특정 데이터 세트의 블록을 빌드하는 경우 데이터 세트의 모든 설정 또는 맞춤설정을 기록해 둡니다. 가능하다면 사용자 설치를 간소화할 수 있도록 맞춤설정을 최소화합니다. README 파일에 특정 안내를 제공합니다.
  • 동질 집단 유지와 같은 일반 분석 패턴의 블록을 빌드하는 경우 사용자의 데이터 세트에 포함할 필드를 기록해 둡니다. 사용자가 데이터 세트와 동일한 스키마, 테이블, 필드 이름을 가지고 있지 않을 가능성이 높습니다. 테이블 및 필드 이름에 LookML 상수를 사용하고 사용자에게 README 파일에서 업데이트해야 하는 필드를 알려줍니다.

데이터 소스를 확인했으면 데이터 소스를 Looker에 연결하여 모델링을 시작할 수 있도록 합니다. 기본 연결 설정을 변경해야 하는 경우 README 파일에 기록해 둡니다.

프로젝트 만들기 및 필수 파일 추가

블록을 나타내는 프로젝트를 만듭니다. block-<database_dialect>-<role>과 같은 이름 지정 규칙을 사용하는 것이 좋습니다(예: block-redshift-admin).

다음으로 프로젝트에 다음 파일을 만듭니다.

  • 프로젝트 이름, 연결 이름, 기타 상수를 정의하는 매니페스트 파일
  • 각 뷰의 뷰 파일
  • 각 Explore의 Explore 파일
  • 프로젝트의 모든 뷰 파일, Explore 파일, LookML 대시보드 파일을 포함하는 모델 파일
  • LookML 대시보드 파일 3개 이상
  • 이 블록의 Marketplace 목록에 표시될 정보가 포함된 marketplace.json 파일
  • MIT 오픈소스 라이선스 텍스트가 포함된 LICENSE 파일
  • 설정 안내 및 옵션을 자세히 설명하는 README 파일

블록을 설치하는 사용자는 별도의 refinements.lkml 파일에서 기본 Explore, 뷰, 대시보드를 구체적으로 조정할 수 있습니다. 다음 섹션에서는 각 필수 파일 형식을 자세히 설명합니다.

매니페스트 파일 만들기

프로젝트의 매니페스트 파일을 만듭니다. 매니페스트 파일은 프로젝트 이름으로 시작한 다음 사용자가 변경할 수 있도록 몇 가지 LookML 상수를 정의해야 합니다. 예를 들어 Looker 연결 이름을 사용자가 자체 연결 이름으로 재정의할 수 있도록 export: override_required를 상수로 정의해야 합니다.

다음은 샘플 매니페스트 파일입니다.

project_name: "block-ga-360"

################# Constants ################

## Used in google_analytics_block.model connection param
constant: CONNECTION_NAME {
  value: "looker-private-demo"
  export: override_required
}

## Used in ga_sessions.view sql_table_name
constant: SCHEMA_NAME {
  value: "bigquery-public-data.google_analytics_sample"
  export: override_optional
}

constant: GA360_TABLE_NAME {
  value: "ga_sessions_*"
  export: override_optional
}

뷰 및 Explore 파일 만들기

각 뷰에 대해 view.lkml 파일을 만듭니다. 사용자의 스키마와 테이블 이름이 서로 다른 경우 블록을 다운로드하는 사용자가 자동 생성된 매니페스트 파일의 스키마 및 테이블 이름을 업데이트할 수 있도록 매니페스트 파일에서 스키마와 테이블 이름을 상수로 정의해야 합니다. 그런 다음 뷰의 상수 sql_table_name에서 이러한 상수를 참조합니다.

다음은 블록 view.lkml 파일의 예시입니다.

view: user_facts {

  # SCHEMA_NAME and GA360_TABLE_NAME are constants
  sql_table_name: @{SCHEMA_NAME}.@{GA360_TABLE_NAME} ;;

  dimension: clientID {
    type: string
    sql: ${TABLE.clientId}
  }

}

다음으로 하나 이상의 explore.lkml 파일을 만듭니다. 각 Explore 파일에 해당 탐색 분석에 필요한 뷰가 포함되어 있는지 확인합니다. 논리적 조인, 훈련, 선별된 Explore 페이지를 포함하도록 Explore를 신중하게 설계합니다. 다른 사용자가 Marketplace에서 블록을 설치하면 비즈니스 사용자가 간단하게 데이터를 분석하고 시작할 수 있습니다.

모델링 권장사항의 일반 목록은 커뮤니티 포럼권장사항: LookML 권장사항과 금지사항권장사항: 지속 가능하고 유지관리 가능한 LookML 작성과 같은 Looker 권장사항에서 찾을 수 있습니다.

다음은 explore.lkml 파일의 예시입니다.

include: "/Google_Analytics/Sessions/*.view.lkml"

explore: future_input {
  view_label: "Audience Traits"
  label: "BigQuery ML Customer Likelihood to Purchase"
  description: "This explore allows you to slice and dice likeliness to purchase scores by different customer traits to see how they differ. The default range of data you are looking at is in the past 30 days"
  join: future_purchase_prediction {
    type: left_outer
    sql_on: ${future_purchase_prediction.clientId} = ${future_input.client_id} ;;
    relationship: one_to_one
  }
}

모델 파일 만들기

프로젝트의 모든 뷰, Explore, 대시보드 파일을 포함하는 모델 파일을 만듭니다. 매니페스트 파일에서 연결 이름이 LookML 상수로 참조되었는지 확인합니다.

캐싱 정책을 설정하려면 datagroup을 하나 이상 정의합니다.

다음은 모델 파일의 예시입니다.

connection: "@{CONNECTION_NAME}"

include: "/views/*.view.lkml"
include: "/explores/*.explore.lkml"
include: "/dashboards/*.dashboard.lookml"

datagroup: nightly {
  sql_trigger: SELECT TIMEZONE('US/Pacific',GETDATE())::DATE;;
}

LookML 대시보드 파일 만들기

Looker Marketplace에 포함하려면 각 블록에 의미 있고 유용한 분석을 제공하는 LookML 대시보드가 3개 이상 포함되어야 합니다. 대시보드는 미적, 기능적, 포괄적이어야 하며 흐리게 처리된 데이터를 포함해서는 안 됩니다.

LookML 대시보드에는 엄격한 설계 요구사항이 없지만 Looker에는 다음과 같은 일반적인 설계 권장사항이 권장됩니다.

  • 대시보드 전체에서 일관된 색상 팔레트
  • 최소 7개의 타일
  • 최소 3개 이상의 시각화 유형(예: 단일 값, 막대, 선)

블록용 대시보드를 개발할 때는 커스텀 시각화가 지원되지 않습니다. 대신 Looker의 기본 시각화 유형을 사용하세요.

LookML 대시보드 및 LookML 대시보드 내의 시각화를 각각 맞춤설정하는 방법에 대한 자세한 내용은 대시보드 매개변수대시보드 요소 매개변수 문서 페이지를 참조하세요. LookML 대시보드 파일 예시는 Redshift 관리자 블록의 Redshift 관리자 LookML 대시보드 파일을 참조하세요.

marketplace.json 파일 만들기

marketplace.json 파일을 만들어 Marketplace에 목록을 표시하는 방법에 대한 정보를 제공합니다. Looker Marketplace의 각 블록은 사용자가 니즈에 가장 적합한 블록을 선택할 수 있도록 이 추가 정보를 제공해야 합니다. marketplace.json 파일에는 다음이 포함되어야 합니다.

  • Marketplace label, category_label, branding 필드
  • 모델 LookML을 채우기 위해 사용자가 작성해야 하는 LookML 상수 목록(예: 연결 이름)

다음은 Google BigQuery 성능 블록의 marketplace.json 파일 예시입니다.

{
  "label": "Google BigQuery Performance",
  "category_label": "Models",
  "branding": {
    "image_uri": "https://marketplace-api.looker.com/block-icons/google-cloud.png",
    "tagline": "This Block provides a comprehensive overview of all cost and performance data for one or multiple BigQuery projects, enabling users to effectively monitor BigQuery usage down to a per user level. It can be used to set up alerts to long running or high cost queries."
  },

  "constants": {
    "CONNECTION_NAME": {
      "label": "Connection Name",
      "value_constraint": "connection"
    },
    "SCHEMA_NAME": {
      "label": "Schema Name"
    },
    "AUDIT_LOG_EXPORT_TABLE_NAME": {
      "label": "Audit Log Export Table Name",
      "description": "The table name of your BigQuery Optimization data (typically cloudaudit_googleapis_com_data_access_*)."
    }
  },
  "models": [
    {
      "name": "block_bigquery_optimization_v2",
      "connection_constant": "CONNECTION_NAME"
    }
  ]
}

다음 스크린샷은 이 marketplace.json 파일로 생성되는 Marketplace 목록을 보여줍니다.

샘플 Marketplace 목록

  • "label" 필드는 블록의 제목을 제어합니다. 이 예시에서는 Google BigQuery 성능입니다.
  • "tagline" 필드는 Marketplace 목록의 첫 번째 단락을 제어합니다.
  • "image_uri" 필드는 Marketplace 목록의 왼쪽 상단에 표시되는 이미지를 제어합니다. 이 예시에서는 Google Cloud 로고입니다.
  • "constants" 필드는 설치 프로세스 중에 Marketplace UI에 상수를 입력하라는 메시지를 표시합니다. 이 예시에서는 marketplace.json 파일에 상수가 3개(CONNECTION_NAME, SCHEMA_NAME, AUDIT_LOG_EXPORT_TABLE_NAME) 나열되어 있으므로 사용자에게 설치하기 전에 세 필드의 값을 지정하라는 메시지가 표시됩니다.

LICENSE 파일 만들기

모든 Looker 블록은 MIT 오픈소스 라이선스에 따라 라이선스가 부여되어야 합니다. LICENSE라는 파일에 이 라이선스의 텍스트를 포함합니다. LICENSE 파일의 예시는 Redshift 관리자 블록 라이선스 파일을 참조하세요.

README 파일 만들기

README 파일에는 블록을 구현하기 위한 모든 안내가 포함되어야 하며 자동 생성된 매니페스트 파일](#the_autogenerated_manifest_file) 또는 상세검색 파일과 같이 맞춤설정이 필요한 위치를 명시적으로 식별해야 합니다. README 파일의 예시는 Redshift 관리자 블록 README 파일을 참조하세요.

README에 대해 고려해야 할 사항은 다음과 같습니다.

  • 사용자에게 필요한 데이터 소스는 무엇인가요? 구독 요금을 지불해야 하나요?
  • 데이터베이스 사용자에게 어떤 권한이 있어야 하나요?
  • 어떤 Looker 연결 설정이 필요한가요?
  • 블록 필드 이름이 사용자 데이터 세트의 필드 이름과 일치하나요? 그렇지 않다면 사용자가 무엇을 변경해야 할까요?

자동 생성된 파일

사용자가 블록을 설치하면 Looker 인스턴스에서 읽기 전용 프로젝트 파일이 포함된 새 Looker 프로젝트를 만듭니다. 또한 사용자에 대해 다음 파일이 자동으로 생성됩니다.

  • Marketplace 목록 정보가 포함된 읽기 전용 marketplace_lock.lkml 파일
  • marketplace_lock.lkml의 목록을 참조하는 매니페스트 파일
  • 블록에서 모든 뷰와 Explore를 포함하는 refinements.lkml 파일
  • 블록의 모델 파일refinements.lkml 파일을 모두 포함하는 읽기 전용 모델 파일

Looker Marketplace에서 블록을 설치하는 사용자는 refinements.lkml 파일을 사용하여 LookML을 세분화하고 새 LookML 파일을 추가할 수도 있습니다. 사용자가 블록을 맞춤설정하는 방법에 대한 자세한 내용은 Looker Marketplace 블록 맞춤설정 문서 페이지를 참조하세요.

자동 생성된 매니페스트 파일

자동 생성된 매니페스트 파일을 사용하여 블록을 설치하는 사용자가 연결 이름과 같은 변수를 설정할 수 있습니다. 블록 매니페스트 파일에 정의된 LookML 상수는 자동 생성된 매니페스트 파일에서 수정하거나 블록 다운로드 사용자 인터페이스에서 사용자가 설정할 수 있습니다.

상세검색 파일

자동 생성된 refinements.lkml 파일을 사용하면 블록을 설치한 사용자가 블록을 정의한 뷰와 Explore를 구체적으로 조정할 수 있습니다. 여기에서 블록을 다운로드하는 사용자는 사용 사례에 맞게 많은 LookML 맞춤설정을 수행합니다.

다음은 자동 생성된 refinements.lkml 파일의 예시입니다.

include: "//ga360-v2/**/*.view.lkml"
include: "//ga360-v2/**/*.explore.lkml"

\# Use LookML refinements to refine views and explores that are defined in the remote project.
\# Learn more at: https://docs.looker.com/data-modeling/learning-lookml/refinements
\#
\#
\# For example we could add a new dimension to a view:
\#     view: +flights {
\#       dimension: air_carrier {
\#         type: string
\#         sql: ${TABLE}.air_carrier ;;
\#       }
\#     }
\#
\# Or apply a label to an explore:
\#     explore: +aircraft {
\#       label: "Aircraft Simplified"
\#     }
\#

블록 프로젝트에 액세스 가능 설정

공개적으로 액세스할 수 있는 GitHub 저장소에서 블록 LookML을 호스팅합니다.

모든 Looker 블록은 MIT 오픈소스 라이선스에 따라 라이선스가 부여되어야 하며 라이선스 텍스트는 저장소의 LICENSE 파일에 포함되어야 합니다.

검토를 위해 블록 제출

블록을 제출할 준비가 되면 Looker Marketplace에 콘텐츠 제출의 안내에 따라 블록 지원 문서를 작성하고 검토를 위해 Looker팀에 블록을 제출하며 Looker Marketplace에 블록을 게시합니다.