public static function getDataLoadManifest($identifier, array $columns, $incrementalLoad = false) { $manifest = ['dataSetSLIManifest' => ['file' => "{$identifier}.csv", 'dataSet' => $identifier, 'parts' => []]]; foreach ($columns as $columnName => $column) { if (!isset($column['type'])) { continue; } switch ($column['type']) { case 'CONNECTION_POINT': case 'ATTRIBUTE': if (!isset($column['identifierLabel'])) { throw Exception::configurationError("Configuration of column {$columnName} is missing 'identifierLabel'"); } $manifest['dataSetSLIManifest']['parts'][] = ['columnName' => $columnName, 'populates' => [$column['identifierLabel']], 'mode' => $incrementalLoad ? 'INCREMENTAL' : 'FULL', 'referenceKey' => 1]; break; case 'FACT': if (!isset($column['identifier'])) { throw Exception::configurationError("Configuration of column {$columnName} is missing 'identifier'"); } $manifest['dataSetSLIManifest']['parts'][] = ['columnName' => $columnName, 'populates' => [$column['identifier']], 'mode' => $incrementalLoad ? 'INCREMENTAL' : 'FULL']; break; case 'LABEL': case 'HYPERLINK': if (!isset($column['identifier'])) { throw Exception::configurationError("Configuration of column {$columnName} is missing 'identifier'"); } $manifest['dataSetSLIManifest']['parts'][] = ['columnName' => $columnName, 'populates' => [$column['identifier']], 'mode' => $incrementalLoad ? 'INCREMENTAL' : 'FULL']; break; case 'REFERENCE': if (!isset($column['schemaReferenceConnectionLabel'])) { throw Exception::configurationError("Configuration of column {$columnName} is missing 'schemaReferenceConnectionLabel'"); } $manifest['dataSetSLIManifest']['parts'][] = ['columnName' => $columnName, 'populates' => [$column['schemaReferenceConnectionLabel']], 'mode' => $incrementalLoad ? 'INCREMENTAL' : 'FULL', 'referenceKey' => 1]; break; case 'DATE': if (!isset($column['identifier'])) { throw Exception::configurationError("Configuration of column {$columnName} is missing 'identifier'"); } $manifest['dataSetSLIManifest']['parts'][] = ['columnName' => $columnName, 'populates' => ["{$column['identifier']}.date.mmddyyyy"], 'constraints' => ['date' => (string) $column['format']], 'mode' => $incrementalLoad ? 'INCREMENTAL' : 'FULL', 'referenceKey' => 1]; if (!empty($column['includeTime'])) { if (!isset($column['identifierTimeFact'])) { throw Exception::configurationError("Configuration of column {$columnName} is missing 'identifierTimeFact'"); } $manifest['dataSetSLIManifest']['parts'][] = ['columnName' => $columnName . '_tm', 'populates' => [$column['identifierTimeFact']], 'mode' => $incrementalLoad ? 'INCREMENTAL' : 'FULL']; $manifest['dataSetSLIManifest']['parts'][] = ['columnName' => $columnName . '_id', 'populates' => ["label.time.second.of.day." . Identifiers::getIdentifier($column['dateDimension'])], 'mode' => $incrementalLoad ? 'INCREMENTAL' : 'FULL', 'referenceKey' => 1]; } break; case 'IGNORE': break; } } return $manifest; }