

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menghubungkan ke Domo
<a name="connecting-to-data-domo"></a>

Domo adalah alat dash-boarding berbasis cloud. Dengan platform aplikasi perusahaan Domo, fondasi yang Anda butuhkan untuk memperluas Domo sudah ada, sehingga Anda dapat membangun solusi khusus Anda lebih cepat.

**Topics**
+ [AWS Glue dukungan untuk Domo](domo-support.md)
+ [Kebijakan yang berisi operasi API untuk membuat dan menggunakan koneksi](domo-configuring-iam-permissions.md)
+ [Mengkonfigurasi Domo](domo-configuring.md)
+ [Mengkonfigurasi koneksi Domo](domo-configuring-connections.md)
+ [Membaca dari entitas Domo](domo-reading-from-entities.md)
+ [Opsi koneksi Domo](domo-connection-options.md)
+ [Keterbatasan domo](domo-connection-limitations.md)

# AWS Glue dukungan untuk Domo
<a name="domo-support"></a>

AWS Glue mendukung Domo sebagai berikut:

**Didukung sebagai sumber?**  
Ya. Anda dapat menggunakan pekerjaan AWS Glue ETL untuk menanyakan data dari Domo.

**Didukung sebagai target?**  
Tidak.

**Versi Domo API yang didukung**  
Versi Domo API berikut didukung:
+ v1

# Kebijakan yang berisi operasi API untuk membuat dan menggunakan koneksi
<a name="domo-configuring-iam-permissions"></a>

Kebijakan contoh berikut menjelaskan izin AWS IAM yang diperlukan untuk membuat dan menggunakan koneksi. Jika Anda membuat peran baru, buat kebijakan yang berisi hal-hal berikut:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

Jika Anda tidak ingin menggunakan metode di atas, gunakan kebijakan IAM terkelola berikut ini:
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole)— Memberikan akses ke sumber daya yang diperlukan berbagai AWS Glue proses untuk dijalankan atas nama Anda. Sumber daya ini termasuk AWS Glue, Amazon S3, IAM, CloudWatch Log, dan Amazon. EC2 Jika Anda mengikuti konvensi penamaan untuk sumber daya yang ditentukan dalam kebijakan ini, AWS Glue proses memiliki izin yang diperlukan. Kebijakan ini biasanya dilampirkan pada peran yang ditentukan saat menentukan crawler, tugas, dan titik akhir pengembangan.
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)— Memberikan akses penuh ke AWS Glue sumber daya saat identitas yang dilampirkan kebijakan menggunakan Konsol AWS Manajemen. Jika Anda mengikuti konvensi penamaan untuk sumber daya yang ditentukan dalam kebijakan ini, maka pengguna memiliki kemampuan konsol penuh. Kebijakan ini biasanya dilampirkan ke pengguna AWS Glue konsol.

# Mengkonfigurasi Domo
<a name="domo-configuring"></a>

Sebelum Anda dapat menggunakan AWS Glue untuk mentransfer data dari Domo ke tujuan yang didukung, Anda harus memenuhi persyaratan ini:

## Persyaratan minimum
<a name="domo-configuring-min-requirements"></a>

Berikut ini adalah persyaratan minimum:
+ Anda memiliki akun Domo yang diaktifkan untuk akses API.
+ Anda memiliki aplikasi di bawah akun pengembang Domo Anda yang menyediakan kredensi klien yang AWS Glue digunakan untuk mengakses data Anda dengan aman saat melakukan panggilan yang diautentikasi ke akun Anda. Untuk informasi selengkapnya, lihat [Membuat aplikasi pengembang Domo](#domo-configuring-creating-developer-app).

Jika Anda memenuhi persyaratan ini, Anda siap untuk terhubung AWS Glue ke akun Domo Anda.

## Membuat aplikasi pengembang Domo
<a name="domo-configuring-creating-developer-app"></a>

Untuk mendapatkan ID Klien dan Rahasia Klien, Anda membuat akun pengembang.

1. Buka [halaman login pengembang Domo](https://developer.domo.com/manage-clients).

1. Pilih **Login**.

1. Berikan nama domain dan klik **Lanjutkan**.

1. Arahkan kursor ke **Akun Saya** dan pilih **Klien Baru**.

1. Berikan Nama dan Deskripsi dan pilih ruang lingkup (“data”) dan pilih **Buat**.

1. Ambil **Client Id** dan **Client Secret** yang dihasilkan dari klien baru yang dibuat.

# Mengkonfigurasi koneksi Domo
<a name="domo-configuring-connections"></a>

Domo mendukung jenis hibah CLIENT\$1CREDENTIALS untuk. OAuth2
+ Jenis hibah ini dianggap berkaki dua OAuth karena hanya aplikasi klien yang mengautentikasi dirinya ke server, tanpa keterlibatan kepada pengguna.
+ Pengguna dapat memilih untuk membuat aplikasi mereka sendiri yang terhubung di Domo dan memberikan ID klien dan rahasia klien mereka sendiri saat membuat koneksi melalui AWS Glue konsol.
+ [Untuk dokumentasi Domo publik tentang membuat aplikasi yang terhubung untuk OAuth alur Kode Otorisasi, lihat OAuth Otentikasi.](https://developer.domo.com/portal/1845fc11bbe5d-api-authentication)

Untuk mengkonfigurasi koneksi Domo:

1. Di AWS Secrets Manager, buat rahasia dengan detail berikut:

   1. Untuk aplikasi terhubung yang dikelola pelanggan, Rahasia harus berisi token akses aplikasi yang terhubung,`client_id`, dan`client_secret`.

   1. Catatan: Anda harus membuat rahasia untuk koneksi Anda di AWS Glue.

1. Di AWS Glue Glue Studio, buat koneksi di bawah **Koneksi Data** dengan mengikuti langkah-langkah di bawah ini:

   1. Di bawah **Koneksi**, pilih **Buat koneksi**.

   1. Saat memilih **Sumber Data**, pilih Domo.

   1. Pilih peran AWS IAM yang AWS Glue dapat mengasumsikan dan memiliki izin untuk tindakan berikut:

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1. Pilih `secretName` yang ingin Anda gunakan untuk koneksi ini AWS Glue untuk memasukkan token.

   1. Pilih opsi jaringan jika Anda ingin menggunakan jaringan Anda.

1. Berikan peran IAM yang terkait dengan izin AWS Glue pekerjaan Anda untuk membaca`secretName`.

# Membaca dari entitas Domo
<a name="domo-reading-from-entities"></a>

**Prasyarat**

Objek Domo yang ingin Anda baca. Anda akan memerlukan nama objek seperti Data Set atau Kebijakan Izin Data. Tabel berikut menunjukkan entitas yang didukung.

**Entitas yang didukung untuk sumber**:


| Entitas | Dapat disaring | Mendukung batas | Mendukung Pesanan oleh | Mendukung Pilih\$1 | Mendukung partisi | 
| --- | --- | --- | --- | --- | --- | 
| Kumpulan Data | Ya | Ya | Ya | Ya | Ya | 
| Kebijakan Izin Data | Tidak | Tidak | Tidak | Ya | Tidak | 

**Contoh:**

```
Domo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="domo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dataset",
        "API_VERSION": "v1"
    }
```

## Entitas domo dan detail bidang
<a name="domo-reading-from-entities-field-details"></a>

Entitas dengan metadata statis:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/domo-reading-from-entities.html)

Untuk entitas berikut, Domo menyediakan titik akhir untuk mengambil metadata secara dinamis, sehingga dukungan operator ditangkap pada tingkat tipe data untuk entitas.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/domo-reading-from-entities.html)

## Mempartisi kueri
<a name="domo-reading-from-partitioning"></a>

**Partisi berbasis lapangan**

Anda dapat memberikan opsi Spark tambahan`PARTITION_FIELD`,, `LOWER_BOUND``UPPER_BOUND`, dan `NUM_PARTITIONS` jika Anda ingin memanfaatkan konkurensi di Spark. Dengan parameter ini, kueri asli akan dibagi menjadi `NUM_PARTITIONS` sejumlah sub-kueri yang dapat dijalankan oleh tugas Spark secara bersamaan.
+ `PARTITION_FIELD`: nama bidang yang akan digunakan untuk mempartisi kueri.
+ `LOWER_BOUND`: nilai batas bawah **inklusif** dari bidang partisi yang dipilih.

  Untuk DateTime bidang, kami menerima nilai dalam format ISO.

  Contoh nilai valid:

  ```
  "2023-01-15T11:18:39.205Z"
  ```

  Untuk bidang Tanggal, kami menerima nilai dalam format ISO.

  Contoh nilai valid:

  ```
  "2023-01-15"
  ```
+ `UPPER_BOUND`: nilai batas atas **eksklusif** dari bidang partisi yang dipilih.

  Contoh nilai valid:

  ```
  "2023-02-15T11:18:39.205Z"
  ```
+ `NUM_PARTITIONS`: jumlah partisi.

Detail dukungan bidang partisi berdasarkan entitas ditangkap dalam tabel berikut:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/domo-reading-from-entities.html)

Contoh:

```
Domo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="domo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dataset",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "permissionTime"
        "LOWER_BOUND": "2023-01-15T11:18:39.205Z"
        "UPPER_BOUND": "2023-02-15T11:18:39.205Z"
        "NUM_PARTITIONS": "2"
    }
```

**Partisi berbasis rekaman**

Anda dapat memberikan opsi Spark tambahan `NUM_PARTITIONS` jika Anda ingin menggunakan konkurensi di Spark. Dengan parameter ini, kueri asli akan dibagi menjadi `NUM_PARTITIONS` sejumlah sub-kueri yang dapat dijalankan oleh tugas Spark secara bersamaan.

Dalam partisi berbasis catatan, jumlah total catatan yang ada ditanyakan dari Domo, dan dibagi dengan nomor yang disediakan. `NUM_PARTITIONS` Jumlah catatan yang dihasilkan kemudian diambil secara bersamaan oleh setiap sub-kueri.

Contoh:

```
Domo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="domo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dataset",
        "API_VERSION": "v1",
        "NUM_PARTITIONS": "2"
    }
```

# Opsi koneksi Domo
<a name="domo-connection-options"></a>

Berikut ini adalah opsi koneksi untuk Domo:
+ `ENTITY_NAME`(String) - (Diperlukan) Digunakan untuk Baca. Nama objek Anda di Domo.
+ `API_VERSION`(String) - (Diperlukan) Digunakan untuk Baca. Domo Rest API versi yang ingin Anda gunakan.
+ `SELECTED_FIELDS`(Daftar<String>) - Default: kosong (SELECT \$1). Digunakan untuk Baca. Kolom yang ingin Anda pilih untuk objek.
+ `FILTER_PREDICATE`(String) - Default: kosong. Digunakan untuk Baca. Itu harus dalam format Spark SQL.
+ `QUERY`(String) - Default: kosong. Digunakan untuk Baca. Kueri SQL Spark penuh.
+ `PARTITION_FIELD`(String) - Digunakan untuk membaca. Bidang yang akan digunakan untuk mempartisi kueri.
+ `LOWER_BOUND`(String) - Digunakan untuk membaca. Nilai batas bawah inklusif dari bidang partisi yang dipilih.
+ `UPPER_BOUND`(String) - Digunakan untuk membaca. Nilai batas atas eksklusif dari bidang partisi yang dipilih. 
+ `NUM_PARTITIONS`(Integer) - Default: 1. Digunakan untuk membaca. Jumlah partisi untuk dibaca.

# Keterbatasan domo
<a name="domo-connection-limitations"></a>

Berikut ini adalah batasan atau catatan untuk Domo:
+ Karena keterbatasan SDK, filtrasi tidak berfungsi seperti yang diharapkan untuk bidang yang dapat dikueri yang dimulai dengan '\$1' (misalnya: \$1BATCH\$1ID).
+ Karena keterbatasan API, filtrasi berfungsi pada tanggal sebelum tanggal yang Anda berikan. Ini juga mempengaruhi tarikan inkremental. Untuk mengatasi batasan ini, pilih tanggal sesuai dengan zona waktu Anda terhadap UTC, untuk mendapatkan data untuk tanggal yang diperlukan.