Looker Marketplace를 위한 커스텀 블록 개발

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

Looker Marketplace에 콘텐츠를 제출하려면 Looker 파트너 네트워크 회원 또는 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)과 같은 명명 규칙을 사용해 보세요.

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

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

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

매니페스트 파일 만들기

프로젝트의 매니페스트 파일을 만듭니다. 매니페스트 파일은 프로젝트 이름으로 시작한 다음 사용자가 변경할 수 있도록 몇 가지 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
}

보기 및 탐색 파일 만들기

각 뷰에 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 파일을 하나 이상 만듭니다. 각 탐색 파일에 탐색에 필요한 뷰가 포함되어 있는지 확인합니다. 논리적인 조인, 드릴, 선별된 탐색 페이지를 포함하도록 탐색 기능을 신중하게 설계합니다. 다른 사용자가 Marketplace에서 블록을 설치하고 나면 비즈니스 사용자가 손쉽게 데이터 분석을 시작하고 시작할 수 있어야 합니다.

커뮤니티 포럼Looker 고객센터(예: 권장사항: LookML Dos and Don&#3권장사항: 지속 가능하고 유지관리 가능한 LookML 작성)에서 모델링 권장사항의 일반 목록을 확인할 수 있습니다.

다음은 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
  }
}

모델 파일 만들기

프로젝트의 모든 뷰, 탐색, 대시보드 파일을 포함하는 모델 파일을 만듭니다. 연결 이름은 매니페스트 파일에서 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 대시보드의 경우 엄격한 설계 요구사항이 없지만 다음과 같은 일반적인 설계 권장사항을 따르는 것이 좋습니다.

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

블록용 대시보드를 개발할 때는 맞춤 시각화가 지원되지 않습니다. 대신 Looker의 네이티브 시각화 유형을 사용하세요.

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

marketplace.json 파일 만들기

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

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

다음은 Google BigQuery Performance 블록용 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 BQ 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 BQ Optimization data (typically cloudaudit_googleapis_com_data_access_*)."
    }
  },
  "models": [
    {
      "name": "block_bigquery_optimization_v2",
      "connection_constant": "CONNECTION_NAME"
    }
  ]
}

다음 스크린샷은 이 marketplace.json 파일로 생성될 Marketplace 등록정보를 보여줍니다.

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

라이선스 파일 만들기

모든 Looker 블록의 라이선스는 MIT 오픈소스 라이선스에 따라 있어야 합니다. 이름이 LICENSE인 파일에 이 라이선스의 텍스트를 포함합니다. 라이선스 파일의 예는 Redshift 관리자 차단 라이선스 파일을 참고하세요.

README 파일 만들기

README 파일에는 블록을 구현하는 방법에 대한 모든 지침이 있어야 하며 자동 생성된 매니페스트 파일](#the_autogenerate_manifest_file) 또는 세분화 파일과 같이 맞춤설정이 필요한 위치를 명시적으로 지정해야 합니다. README 파일의 예는 Redshift Admin Block README 파일을 참조하세요.

README의 고려사항:

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

자동 생성된 파일

사용자가 블록을 설치하면 Looker 인스턴스는 프로젝트 파일을 읽기 전용 파일로 사용하여 새로운 Looker 프로젝트를 만듭니다. 사용자를 위해 다음 파일도 자동으로 생성됩니다.

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

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

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

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

상세검색 파일

자동 생성된 refinements.lkml 파일을 사용하면 블록을 설치한 사용자가 블록을 정의한 보기 및 탐색 분석을 세분화할 수 있습니다. 여기에서 블록을 다운로드하는 사용자가 사용 사례에 맞게 대부분의 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 오픈소스 라이선스에 따라 라이선스가 부여되어야 하며, 라이선스 텍스트는 저장소의 라이선스 파일에 포함되어야 합니다.

검토를 위해 차단 제출

차단을 제출할 준비가 되면 Looker Marketplace에 콘텐츠 제출의 안내에 따라 차단에 대한 증빙 문서를 만들고 검토를 위해 Looker팀에 차단을 제출한 다음 Looker Marketplace에 블록을 게시합니다.