DM создать представление BigQuery, а затем авторизовать его на наборе данных - PullRequest
0 голосов
/ 21 февраля 2020

Используя Google Deployment Manager, кто-нибудь нашел способ сначала создать представление в BigQuery, а затем авторизовать один или несколько наборов данных, используемых представлением, иногда в разных проектах, и которые не были созданы / управляемы администратором развертывания? Создание набора данных с видом не было слишком сложным. Вот шаблон jinja с именем inventoryServices_bigquery_territory_views.jinja:

resources:
- name: territory-{{properties["OU"]}}
  type: gcp-types/bigquery-v2:datasets
  properties:
    datasetReference:
      datasetId: territory_{{properties["OU"]}}
- name: files
  type: gcp-types/bigquery-v2:tables
  properties:
    datasetId: $(ref.territory-{{properties["OU"]}}.datasetReference.datasetId)
    tableReference:
      tableId: files
    view:
      query: >
        SELECT DATE(DAY) DAY, ou, email, name, mimeType
        FROM `{{properties["files_table_id"]}}`
        WHERE LOWER(SPLIT(ou, "/")[SAFE_OFFSET(1)]) = "{{properties["OU"]}}"
      useLegacySql: false

Конфигурация развертывания ссылается на вышеуказанный шаблон следующим образом:

imports:
- path: inventoryServices_bigquery_territory_views.jinja

resources:
- name: inventoryServices_bigquery_territory_views
  type: inventoryServices_bigquery_territory_views.jinja

В приведенном выше примере files_table_id - это project.dataset.table для этого требуется авторизованное вновь созданное представление.

Я видел несколько примеров управления IAM на уровне проекта / папки / организации, но моя потребность в наборе данных, а не в проекте. Глядя на представление ресурса набора данных , кажется, что я могу обновить access.view с помощью вновь созданного представления, но я немного растерялся, как бы я это сделал, не удаляя существующие уровни доступа, и для наборов данных в проекты, отличные от тех, в которых создается новое представление. Любая помощь приветствуется.

Редактировать: я попытался добавить набор данных, для которого необходимо, чтобы представление было авторизовано примерно так, а затем развернуть его в режиме предварительного просмотра, чтобы увидеть, как он интерпретирует конфигурацию. :

-name: files-source
  type: gcp-types/bigquery-v2:datasets
  properties:
    datasetReference:
      datasetId: {{properties["files_table_id"]}}
    access:
      view:
        projectId: {{env['project']}}
        datasetId: $(ref.territory-{{properties["OU"]}}.datasetReference.datasetId)
        tableId: $(ref.territory_files.tableReference.tableId)

Но при развертывании в режиме предварительного просмотра выдается эта ошибка:

errors:
- code: MANIFEST_EXPANSION_USER_ERROR
  location: /deployments/inventoryservices-bigquery-territory-views-us/manifests/manifest-1582283242420
  message: |-
    Manifest expansion encountered the following errors: mapping values are not allowed here
      in "<unicode string>", line 26, column 7:
          type: gcp-types/bigquery-v2:datasets
              ^ Resource: config

Странно для меня, трудно понять смысл этой ошибки, поскольку строка / столбец, на который она указывает to форматируется точно так же, как и другой набор данных в конфигурации, за исключением того, что, возможно, ему не нравится, что набор данных file-source уже существует и был создан вне администратора развертывания.

...